添加 CCheckBoxColumn :
有时也许我们会需要一个复选框,来对每一行进行选择,这时,我们可以增加一列,用 CCheckBoxColumn 类:
<?php $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'post-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( array( 'selectableRows' => 2, //允许多选,改为 0 时代表不允许修改,1 的话为单选 'class' => 'CCheckBoxColumn',//复选框 'headerHtmlOptions' => array('width'=>'18px'),//头部的 html 选项 'checkBoxHtmlOptions' => array('name' => 'myname','class'=>'myclass'), //复选框的 html 选项 ), 'post_id', 'title', 'content', 'tags', 'status', 'create_time', 'update_time', 'author_id', 'is_delete', array( 'name'=>'is_delete', 'value'=>'is_delete?"是":"否"', //value 是可以执行 php 语句的哦 'filter' => array(0=>'否',1=>'是'), //自己定义搜索过滤的方式,这里为 是 和 否 的下拉菜单 'htmlOptions'=>array('class'=>'delete'), //可以定义 html 选项,这里是定义了带一个 delete 的类 ), array( 'class'=>'CButtonColumn', ), ), ));
修改ButtonColumn:
注意到列表每一项的最后三个小图标吗?不需要的话当然是直接删了,那要是只要其中某几个呢?可以加一个 template 参数:
array( 'class'=>'ButtonColumn', 'template'=>"{view} {update}", ),也可以自定义按钮:
array( 'class'=>'ButtonColumn', 'template'=>"{view} {update} {print}", 'buttons'=>array( 'print'=>array( 'label'=>'打印', 'url'=>'Yii::app()->controller->createUrl("print", array("id"=>$data->post_id))', 'options'=>array("target"=>"_blank"), ), ), ),
刷新时触发 Javascript:
如果你想在每次搜索之后触发一些 Javascript ,Yii 也提供了这个选项,你只要写成一个函数然后设置 afterAjaxUpdate 就好,记住这只是在 ajax 请求完成之后调用的,如果你想在 页面 一开始加载完成就调用的话需要另外加到页面的 Javascript
$js = <<<_JS_ function(){ alert('The ajax finish'); } _JS_; $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'post-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'afterAjaxUpdate'=>$js, //看这里,ajax 之后调用的 javascript 在这里.... 'columns'=>array( array( 'selectableRows' => 2, //允许多选,改为 0 时代表不允许修改,1 的话为单选 'class' => 'CCheckBoxColumn',//复选框 'headerHtmlOptions' => array('width'=>'18px'), 'checkBoxHtmlOptions' => array('name' => 'myname','class'=>'myclass'), ), ....PS:在这里只谈我常用的部分,详细请看文档: CGridView