Yii Framework CGridView详解
来源:互联网 发布:python中的守护线程 编辑:程序博客网 时间:2024/05/01 22:10
这东西在后台比较有用,能加速开发的速度,值得一看
CGridView用表格的方式显示数据项
每一行代表一个数据项,一列通常代表数据项的一个属性
CGridView支持排序和分页,可以用ajax或普通的方式
CgridView必序和data provider一起使用
最简单的用法
$dataprovider = new CActiveDataProvider(‘Post’);
$this->widget(‘zii.widgets.grid.CGridView’,array(
‘dataProvider’=>$dataprovider,
));
这会用表格的方式显示每一条数据项,每一列是Post的一个属性
在显示中带了分页和排序
我们可以自定义CgridView::columns属性,以自定义表格列的显示方式
这个cloumns如何配置呢?
其是一个数组,每一个数组元素对应着一列的配置,可以是字符串或数组
1、如果是字符串,格式是name:type:header 后两者是可选的,根据这三个值,创建一个CdatColumn实例
其中type参见CFormatter
2、如果是数组,其可以实例化CDdataColumn、ClinkColumn,CButtonColumn,CCheckBoxColumn实例,具体实例化哪个
由数组中的class指定,默认是CDataColumn
2.1,如果class=>’CDataCloumn’
则可以指定name或者value,如果指定以value优先
用CDataColumn时如何以关联表的数据序列?
代码如下:表示可以post关联的author中的username排序列
$dataprovider = new CActiveDataProvider(‘Post’,array(
‘criteria’=>array(
‘with’=>’author’,
),
‘sort’=>array(
‘attributes’=>array(
‘title’,'create_time’,
‘author_id’=>array(‘asc’=>’author.username asc’,'desc’=>’author.username desc’,’label’=>’作者’)
)
),
));
$this->widget(‘zii.widgets.grid.CGridView’,array(
‘dataProvider’=>$dataprovider,
‘columns’=>array(
‘title’,
‘create_time’,
array(‘name’=>’author_id’,'value’=>’$data->author->username’),
),
));
另外CDataColumn还有一个filter属性,如果是空,那么生成一个textfield,如果是数组(键值),则生成一个dropDownlist在当前列的上部,供搜索
2.2:如果class=>”CLinkColumn”
array(‘class’=>’CLinkColumn’,'label’=>’查看用户’,'url’=>Yii::app()->createURL(‘user/edit’))
则生成一个连接
2.3:如果class=”CCheckBoxColumn”
array(‘class’=>’CCheckBoxColumn’,'name’=>’title’,'id’=>’select’),
可以生成一个checkbox供选择,且只能选一个
可以配置CGridView::selectableRows 如果是0,则不能选,如果 1,只选一个如果是2或其它值,则可以选多个
代码如下:
$this->widget(‘zii.widgets.grid.CGridView’,array(
‘dataProvider’=>$dataprovider,
‘selectableRows’=>2,
‘columns’=>array(
array(‘class’=>’CCheckBoxColumn’,'name’=>’title’,'id’=>’select’),
),
2.3:如果class=”CButtonColumn”
array(
‘class’=>’CButtonColumn’,
‘updateButtonUrl’=>’Yii::app()->createUrl(“post/edit”,array(“id”=>$data->id));’,
),
修改updateButtonUrl为编辑贴子
如何用gridview生成一个代搜索的管理列表
1、在Model的rules 设定可以搜索的属性
array(‘title, status, create_time’, ‘safe’, ‘on’=>’search’),
2、在Model中,添加搜索时的方法
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare(‘title’,$this->title,true);
$criteria->compare(‘status’,$this->status);
$criteria->compare(‘create_time’,$this->create_time);
return new CActiveDataProvider(‘Post’, array(
‘criteria’=>$criteria,
‘sort’=>array(
‘defaultOrder’=>’status, update_time DESC’,
),
));
}
3、 在Controler中,写接受搜索用到的表单的值的方法
public function actionAdmin()
{
$model=new Post(‘search’);
if(isset($_GET['Post']))
$model->attributes=$_GET['Post'];
$this->render(‘admin’,array(
‘model’=>$model,
));
}
4、在view中用CGridView显示
设置好
widget(‘zii.widgets.grid.CGridView’, array(
‘dataProvider’=>$model->search(),
‘filter’=>$model,
‘columns’=>array(
),
)); ?>
以上代码大部分是yii自动生成的,只要做少量修改即可
有时候会出现,搜索后页面为空的清况,原因可能是
layout/main.php中
echo $content外层无div,就是说main.php中必须有一个div包含$content
//CListView详解
其用列表的形式显示数据,不象CGridView一样,用表格显示数据,CListView用一个 view模板来显示每一条数据
其支持排序与分页
常用的代码如下
$dataProvider = new CActiveDataProvider('Post',array(
'pagination'=>array(
‘pageSize’=>2
),
));
$this->widget(‘zii.widgets.CListView’,array(
‘dataProvider’=>$dataProvider,
‘itemView’=>’_view’,
‘template’=>’ {summary} {items} {pager}{sorter}’,
‘sortableAttributes’=>array(
‘title’,
‘create_time’=>’Post Time’,
),
));
======================================================
如何在CGridView中自定义变量?
http://www.yiiframework.com/forum/index.php?/topic/9617-%E5%A6%82%E4%BD%95%E5%9C%A8cgridview%E4%B8%AD%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8F%98%E9%87%8F%EF%BC%9F/page__p__49002
$this->widget('zii.widgets.grid.cgridview', array(
'dataprovider' => $userdata,
'columns' => array(
'id',
'username',
'fullname',
array(
'datafield' => 'email',
'dataexpression' => 'chtml::mailto($data->email)'
),
'last_login',
array(
'header' => '操作',
'class'=>'CButtonColumn',
'buttons' => array(
'up'=>array(
//这里我们添加一个上移的按钮
'label'=>'上移',
'url'=>'array("up")', //这里单引号一定不要少
'imageUrl'=>false,
//如果没有图片就写false,如果有按钮图片,这里写图片路径
),
'template'=>'{up}{view}{update}{delete}',
),
)
);
- Yii Framework CGridView详解
- Yii Framework CGridView详解
- Yii CGridView详解
- Yii Framework CGridView checkbox 批量上传
- Yii-视图- CGridView列表用法详解。
- Yii CGridView使用
- yii cgridview 自选按钮
- CGridView详解
- Yii向CListView/CGridView中传值
- Yii向CListView/CGridView中传值
- Yii中CGridView使用心得
- 自定义 Yii CGridView 和 CListView 组件
- yii DropDown for pageSize in CGridView
- Yii CGridView 中实现批量删除
- Yii-视图- CGridView操作按钮定义地址
- Yii CGridView 中实现批量删除
- Yii CGridView常用办法[草稿完善中]
- Yii: 扩展CGridView增加导出CSV功能
- C++语言实现的WebService开发库—gsoap应用实例
- C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
- Linux的nfs及mount使用方法
- 隐藏UITableView多余的分割线
- SQL Server中Row_number(),Rank()和dense_rank()的用法
- Yii Framework CGridView详解
- 0009算法笔记——【动态规划】动态规划与斐波那契数列问题,最短路径问题
- Putty管理私钥文件
- 套打印
- s2sh整合
- UML类图和类的关系学习
- WebView 私有api
- hdu 1080 Human Gene Functions(dp)
- 理解git的酷图