默认enableSorting为true,能够经过设置为false来取消此列排序功能,以下图。css
到如今你已经知道了5个使用GridView的技巧,咱们继续,在A6中咱们尝试改变表格某一列的样式。针对于列样式,GridView提供了3个属性,分别为headerOptions、contentOptions和footerOptions。html
如今咱们来作一个需求,将省市这一列个性化,列的头部编程红色,列的内容编程蓝色,以下编程
1数组 2浏览器 3yii2 4app 5框架 6yii 7ide 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
是的,使用这一列的headerOptions和contentOptions便可
有个要注意的地方,咱们使用浏览器的f12看看标注颜色的列。
你看到了,headerOptions和contentOptions直接做用到了th和td标签,为其增长相似于style等属性,所以若是你的th或td标签中还有其余的html标签,直接定义style就没法生效了,此时能够经过css类解决这个问题。
在A6中咱们说GridView的列有一个footerOptions属性,那么这个属性是干吗用的那?从单词上分析是控制列footer的属性(好比样式等等),可是footer在哪里???在哪里在哪里?
须要先设置GridView的showFooter等于true才能够。才能够才能够。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
在showFooter=true的天空下,列的footerOptions才能自由飞翔。
从原理上说,'showFooter'=>true的结果是让table出现了下面代码
1 2 3 4 5 6 7 |
|
所以每列的footerOptions就控制着在tfoot中这一列对应的td。
在咱们大摇大摆的用着A8中的showFooter的时候,忽然PhpStorm自动关联出一个footerRowOptions,这是个什么东西那?
footerRowOptions是GridView的属性,它控制着tfoot的tr标签属性,简单点说,你最后在tfoot上每一个单元格看到的效果是footerRowOptions + footerOptions 的结合体(就style而言)。
好比针对上面的例子咱们在配置下footerRowOptions
1 |
|
则你会发现黄色字体变成了20px。
要注意:A六、A7和A8中的这些xxxOptions所能控制的是标签的属性,不仅仅是style。
从A7中咱们知道了GridView的showFooter,它决定这table是否显示tfoot信息,除此以外show家族还有一些其余成员。
showHeader 能够控制table的头部是否显示,默认显示。
showOnEmpty 当数据为空的时候,table框架是否存在,默认不存在。
这个片断咱们说下GridView列的visible属性,此属性默认为true表明此列显示,经过设置visible属性能够隐藏一列,这种隐藏非css的display:none,而是在渲染表格的时候就去掉了此列。
你可能会问,若是我要使用visible来隐藏一列,我不写这一列不就行了么?
是的,你的思路没错,可是visible是能够传递一个表达式,实现逻辑判断,好比下面的需求当1号管理员登陆的时候能够看到省市一列。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
A1-A10 咱们重点说的是GridView每列的公共属性,这并非所有,针对于不一样类型的列还有会其余的属性,好比DataColumn、ActionColumn、CheckboxColumn等等,针对于不一样类型列的讲解,要后续放出。
接下来咱们进入B系列,B系列的重点在讲解GridView。
默认状况下GridView的布局以下图
这个布局来自于GridView的layout属性,咱们能够改变这个模板,好比要去掉summary。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
layout内有5个可使用的值,分别为{summary}、{errors}、{items}、{sorter}和{pager}。
在一个表格中每列都有不一样的做用,有的是数据类型的、有的是复选框类型,具体有5种
ActionColumn
CheckboxColumn
DataColumn
RadioButtonColumn
SerialColumn
经过GridView能够设置一列的默认类型,固然你能够针对特殊的类单独指定其class。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
咱们能够经过设置GridView的caption属性来实现table的caption功能,做为table用途很是有用。
1 2 3 4 5 6 7 8 9 10 11 |
|
效果图以下
固然不用多说,GridView也提供了captionOptions属性来让你控制caption的属性。
这两个属性有的开发者可能会混淆,接下来我用一张图让你瞬间明白。
就是说GridView渲染的时候首先弄出来一个p容器,这是这个GridView的表明,接下来在此容器内放各类元素,好比{summary}、{items}等等。
options 控制着p容器的属性,默认添加一个class="grid-view"
tableOptions 控制着{items}表格的属性,默认为其添加一个 class="table table-striped table-bordered"
如今你会改table的样式类了么?
咱们在A8中讲了footerRowOptions的用法,headerRowOptions的用法和它同样,只不过它管理的是thead下tr的属性。
学会了B5,你可能看着rowOptions一眼识破,没错它的目的就是管理tbody下的每一个tr,可是它更强大,除了直接接收一个数组外还能传入匿名函数。
你能够融入你的逻辑,好比如今咱们要用rowOptions实现隔行换色的功能,来吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
目的达到,看效果
对于rowOptions接收的匿名行数的4个形参,这里说明一下
$model
: 当前被渲染的对象
$key
: 当前对象的逐渐
$index
: 针对于当前页面,从0开始,逐行加1
$grid
: GridView对象
这是一对很是灵活的属性,它们接收一个匿名函数。分别表示在渲染了一行以前和以后发生点什么?固然具体发生什么由你来决定。
要记住的是,匿名函数返回的结果也会做为一行归入到渲染过程,好比当咱们遇到奇数的时候就在此行下面添加一行,能够以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
很是好,获得了咱们想要的结果
很细节的两个小属性
placeFooterAfterBody 当咱们要显示footer的时候,placeFooterAfterBody属性决定将此html放到table的什么位置,默认放到header后面,你能够选择placeFooterAfterBody=true来让footer放到body后面。此功能是在yii2.0.14才支持的。
emptyCell 又是一个小细节,若是一个单元格为空,用什么字符填充那?默认是  ,你能够从新指定。
不知不觉写了3000多字,本想一篇完成GridView的讲解,如今看来比较困难,毕竟还有不少类型的列要去研究分享,仍是变成专题吧,接下来我会对每一个列作单独的分析,但愿对你有用。
以上就是本文的所有内容,但愿对你们的学习有所帮助,更多相关内容请关注PHP中文网!