CGridView 很方便的管理列表,通过CButtonColumn可直接调入删改查按钮
'dataProvider'是数据集合
'filter'是用户的过滤数据(可以理解是searchForm的submit数据)
'columns'是关键,数组里可以直接是字符串或数组。
当一列被指定为一个字符串, 他的格式应该设置为 "name:type:header", "type" 和 "header" 为可选. 在这种情况下将创建一个CDataColumn 实例, 其 CDataColumn::name, CDataColumn::type and CDataColumn::header 属性将被初始化.
当一列被指定为一个数组, 它将被用来创建一个表格列实例, 其中的“类”元素指定列的类名 (如果没有定义,默认为 CDataColumn). 目前, 有这些正是列类: CDataColumn, CLinkColumn, CButtonColumn 和 CCheckBoxColumn.
name就是数据项名称,进行排序和搜索时要用到;
type的有效值包括CGridView的可辨认:格式化,如:原料,文字,NTEXT,HTML,日期,时间,日期,布尔,号码,电子邮件,图像,URL。如需详细资讯,请参考CFormatter。默认为“文本”,这意味着该属性值将HTML编码。
header是列表上显示的项名称;
value是值,字符串会解析成代码段直接执行(重点所以要加长!!!!!!!!!!!!!!!!!!!!)
filter定义检索,如果不定义,默认是文本框。如果false,为不显示检索。如果是数组,即显示为下拉选框。用法可参考上例。
下面是示例:
zii.widgets.grid.CGridView参考手册
Yii CGridView 中实现批量删除实例详解
Yii: 如何在CGridView组件中根据不同的记录行数据显示不同的操作
Yii CGridView 使用详解
Yii把CGridView文本框换成下拉框的方法
YII框架 CGridview显示字段上面加连接LINK
Yii继承CGridView自定义gridview视图详解
Yii CGridView列表用法详解
Yii框架中CGridView使用教程
yii中如何使用CGridView根据字段值来显示不同的自定义按钮或者文字?
Yii中CGridView关联表字段的filter的使用
Yii自定义 CGridView 中的操作按钮详解
====================简单使用===================
- <?php $this->widget('zii.widgets.grid.CGridView', array(
- 'id'=>'users-grid',
- 'dataProvider'=>$model->search(),
- 'filter'=>$model,
- 'columns'=>array(
- 'uid',
- 'user',
- //'pass',
- 'email',
- array(
- 'name'=>'created',
- 'value'=>'date("Y-m-d H:i:s", $data->created)',
- ),
- array(
- 'class'=>'CButtonColumn',
- ),
- ),
- )); ?>
=============输出html============
- array(
- 'name'=>'name',
- 'type'=>'html',
- 'value'=>'CHtml::link("$data->name","/?r=menu/itemlists/name/$data->name")',
- ),
============隐藏过滤字段======================
- array(
- 'name'=>'picture',
- 'type'=>'html',
- //隐藏picture过滤字段
- 'filter'=>false,
- 'value'=>'(!empty($data->image))?CHtml::image(Yii::app()->baseUrl.$data->picture,"",array("style"=>"width:100px;height:125px;")):CHtml::image(Yii::app()->baseUrl."/images/01.jpg","",array("style"=>"width:100px;height:125px;"))',
- ),
============select选择====================
- array(
- 'name'=>'sex',
- 'filter'=>CHtml::dropDownList('Users[sex]', $model->sex, array(''=>'请选择','0'=>'女','1'=>'男')),
- 'value'=> '$data->sex > 0 ? "男":"女"',
- ),
============头部名更改===================
- array(
- 'name'=>'sex',
- //头部名
- 'header'=>'Description',
- 'filter'=>CHtml::dropDownList('Users[sex]', $model->sex, array(''=>'请选择','0'=>'女','1'=>'男')),
- 'value'=> '$data->sex > 0 ? "男":"女"',
- ),
===============pager使用[分页文字更改]=================
想显示 首页和尾页,去掉样式就可以了
- 'summaryText'=&
- gt;'共<span
- style="color:red;">{count}</span>条 当前:<
- span style="color:red;">{page}</span>-<span
- style="color:red;">{end}</span>条',
- 'pager'=>array(
- 'header' => '',
- 'firstPageLabel' => '首页',
- 'prevPageLabel' => '上一页',
- 'nextPageLabel' => '下一页',
- 'lastPageLabel' => '尾页',
- ),
- 'template'=>'{items}{summary}{pager}',
===========新窗口打开链接===========
- 'columns'=>array(
- 'id',
- 'title',
- array(
- 'name'=>'url',
- 'type'=>'raw',
- 'value'=>'CHtml::link($data->url,$data->url,array("target"=>"_blank","class"=>"aa"))',
- ),
=================CGridView 中实现批量删除========
CGridView中的columns添加
- array(
- 'selectableRows' => 2,
- 'footer' => '<button type="button" onclick="GetCheckbox();" style="width:76px">批量删除</button>',
- 'class' => 'CCheckBoxColumn',
- 'headerHtmlOptions' => array('width'=>'33px'),
- 'checkBoxHtmlOptions' => array('name' => 'selectdel[]'),
- ),
- +++++++2.js代码
- <script type="text/javascript">
- function GetCheckbox(){
- var data=new Array();
- $("input:checkbox[name='selectdel[]']").each(function (){
- if($(this).attr("checked")=="checked"){
- data.push($(this).val());
- }
- });
- if(data.length > 0){
- $.post("index.php?r=Users/delall",{'selectdel[]':data}, function (data) {
- if (data=='ok') {
- alert('删除成功!');
- //window.open('index.php?r=Users/admin','indexFrame');
- }else{
- alert("删除失败");
- }
- });
- }else{
- alert("请选择要删除的选项!");
- }
- }
- </script>
动作action
- /*
- * 作用:批量删除
- */
- public function actionDelall()
- {
- if (Yii::app()->request->isPostRequest)
- {
- $criteria= new CDbCriteria;
- $criteria->addInCondition('uid', $_POST['selectdel']);
- Users::model()->deleteAll($criteria);//Words换成你的模型
- if(isset(Yii::app()->request->isAjaxRequest)) {
- echo 'ok';
- } else
- $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('index'));
- }
- else
- throw new CHttpException(400,'Invalid request. Please do not repeat this request again. no');
- }