我想对表字段的自定义列字段进行排序,它正常工作,clink列字段或关联字段无法正常工作
<?php
$this->widget('zii.widgets.grid.CGridView',
array(
'dataProvider'=>$dataProviderInActive,
'id'=>'collections-grid-inactive',
'itemsCssClass'=>'table collections',
'ajaxUpdate'=>true,
'pager'=>array(
'class'=>'CLinkPager',
'header'=>'',
),
'columns'=>array
(
array(
'class'=>'CLinkColumn',
'labelExpression'=>'$data->collection_title',
'urlExpression'=>'Yii::app()->createUrl("",array("collection"=>$data->collection_title))',
'header'=>'Catalog Title'
),
array( // display 'author.username' using an expression
'name'=>'Number of Images',
'value'=>'',
),
array( // display 'author.username' using an expression
'name'=>'Number of images used in lightboxes',
'value'=>'0',
),
array( // display 'author.username' using an expression
'name'=>'Number of expired',
'value'=>'0',
),
array( // display 'create_time' using an expression
'name'=>'Date Created',
'value'=>'date("Y-m-d", $data->created_at)',
),
array( // display a column with "view", "update" and "delete" buttons
'class'=>'CButtonColumn',
'template'=>'{view}{edit}{delete}{expiration_report}',
'buttons'=>array
(
'view' => array
(
'label'=>'view',
'options'=>array('class'=>'btn'),
'imageUrl'=>'',
'url'=>'Yii::app()->createUrl("",array("collection"=>$data->collection_title))',
),
'edit' => array
(
'label'=>'edit',
'options'=>array('class'=>'btn'),
'imageUrl'=>'',
'url'=>'Yii::app()->createUrl("", array())'
),
'delete' => array
(
'label'=>'delete',
'options'=>array('class'=>'btn-danger btn'),
'imageUrl'=>'',
'url'=>'Yii::app()->createUrl("", array())'
),
'expiration_report' => array
(
'label'=>'expiration report',
'options'=>array('class'=>'btn'),'imageUrl'=>'',
'url'=>'Yii::app()->createUrl("", array())'
),
)
),
),
));
?>
答案 0 :(得分:0)
尝试在排序属性数组中添加属性:
$dataProviderInActive->sort->attributes['collection_title']=array(
'asc'=>'collection_title',
'desc'=>'collection_title DESC');
答案 1 :(得分:0)
您的问题没有完整的详细信息。如果这是自定义字段,则必须根据对象类型显式定义排序。例如,我为CArrayDataProvider对象执行了此操作,此处为。您需要在模型中执行此操作。同样,答案取决于对象类型。在我的示例中,$ rawData是数据库查询返回的数据。
return new CArrayDataProvider($rawData, array(
'id'=>'id',
'sort'=>array(
'attributes'=>array(
'attribute1',
'attribute2',
),
),
'pagination'=>array(
'pageSize'=>50,
),
));