PHP开发实例大全(提高卷) 中文完整pdf扫描版[244MB]
//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 详细说明