`
stevecj
  • 浏览: 105905 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Yii CGridView 详解(关键看关联表字段排序部分)

    博客分类:
  • PHP
阅读更多
Yii CGridView 详解(关键看关联表字段排序部分)


//CGridView详解
这东西在后台比较有用,能加速开发的速度,值得一看

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显示
设置好
<?php $this->widget(‘zii.widgets.grid.CGridView’, array(
‘dataProvider’=>$model->search(),
‘filter’=>$model,
‘columns’=>array(

),
)); ?>

以上代码大部分是yii自动生成的,只要做少量修改即可
有时候会出现,搜索后页面为空的清况,原因可能是
layout/main.php中
echo $content外层无div,就是说main.php中必须有一个div包含$content
分享到:
评论

相关推荐

    Yii中CGridView关联表搜索排序方法实例详解

    本文实例讲述了Yii中CGridView关联表搜索排序方法。分享给大家供大家参考。具体实现方法如下: 在Yii CGridView 关联表搜索排序实现方法有点复杂,今天看了一老外写的了篇游戏,下面我整理一下与各位朋友分享一下,...

    YII CGridView CListView 返回列表带记忆功能

    在这个特定的话题中,“YII CGridView CListView 返回列表带记忆功能”指的是如何在Yii框架中实现CGridView和CListView组件的分页功能,并且在用户翻页或刷新页面后仍能记住用户的筛选、排序和选择状态。 CGridView...

    Yii CGridView用法实例详解

    Yii框架中的CGridView是一个用于展示数据列表的强大工具,其主要功能包括显示数据、支持排序、分页以及通过AJAX请求数据。CGridView广泛应用于Web应用程序中,提供了一个高度可定制的网格视图组件。在本文中,我们...

    YII配置详解以及开发规范

    Yii 框架详解与开发规范 Yii 是一款高效的 PHP 框架,适用于构建大型 Web 应用,包括门户、论坛、内容管理系统(CMS)和电子商务平台等高流量项目。其基于 Model-View-Controller(MVC)设计模式,强调可重用性和...

    Yii框架详解

    Yii框架详解 Yii,全称为“Yet Another Inevitable Framework”,是PHP开发的一款高性能的、基于组件的Web应用开发框架。Yii的设计理念是简洁、高效和可扩展,它旨在提高开发速度并降低维护成本。本篇文章将深入...

    Yii2-GridView 中让关联字段带搜索和排序功能示例

    在Yii2框架中,开发Web应用时经常需要展示和处理关联数据。`Yii2-GridView` 是一个强大的组件,用于创建可配置的、交互式的表格视图。在本示例中,我们将探讨如何在`GridView`中显示关联字段并为其添加搜索和排序...

    详解YII关联查询

    ### 详解Yii框架中的关联查询 #### 一、引言 在开发基于Yii框架的应用程序时,关联查询是一项非常重要的技术。它可以帮助开发者更高效地处理数据库中的多表关系,从而提升应用程序的性能和可维护性。本文将详细...

    Yii把CGridView文本框换成下拉框的方法

    Yii框架的CGridView组件是用于展示数据表格的强大工具,它提供了丰富的功能,如排序、过滤、分页等。然而,在默认设置中,CGridView的过滤器通常为文本框,这可能无法满足所有用户的需求,特别是在需要展示选项列表...

    Yii中CGridView禁止列排序的设置方法

    在Yii框架中,CGridView是一个非常实用的组件,主要用于在Web页面上展示数据列表,并且支持排序、分页以及AJAX数据请求等高级功能。CGridView广泛应用于各种需要以表格形式显示数据的场景,比如管理后台的数据显示、...

    Yii视图CGridView列表用法实例分析

    Yii框架中的CGridView是用于创建数据表格视图的一个强大组件,它允许开发者以灵活的方式展示数据,并提供了排序、分页、筛选以及各种自定义功能。本实例将深入讲解CGridView在Yii视图中的使用方法,以及如何通过实例...

    YII Framework框架教程之使用YIIC快速创建YII应用详解

    主要介绍了YII Framework框架教程之使用YIIC快速创建YII应用的方法,详细分析说明了YII Framework框架使用YIIC命令行创建应用的相关技巧与注意事项,需要的朋友可以参考下

    Yii2 ActiveRecord多表关联及多表关联搜索的实现

    为了实现对关联表字段的搜索,我们需要在搜索模型`UserSearch`中添加规则。在`rules`方法中定义`source`属性,并将其加入到规则中,如下所示: ```php public $source; public function rules() { return [ //...

    Yii中的relations数据关联查询及统计功能用法详解

    主要介绍了Yii中的relations数据关联查询及统计功能用法,结合实例形式分析了关联查询命名空间及评论统计功能相关技巧,需要的朋友可以参考下

    yii1.1.10 开发包(包含yii权威指南以及yii博客例子讲解)

    7. **Ajax支持**:Yii 提供了强大的Ajax功能,如Yii CGridView和CListView,可以轻松创建数据驱动的交互式界面。 8. **Gii代码生成工具**:Gii 是Yii自带的代码生成工具,能自动生成模型、控制器、表单和CRUD操作,...

Global site tag (gtag.js) - Google Analytics