Php 如何为Yii gridview自定义列字段创建排序选项

Php 如何为Yii gridview自定义列字段创建排序选项,php,gridview,yii,Php,Gridview,Yii,我想对表格字段的自定义列字段进行排序,其工作正常,clinkcolumn字段或自定义字段不工作 <?php $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProviderInActive, 'id'=>'collections-grid-inactive', 'itemsCssClass'=>'t

我想对表格字段的自定义列字段进行排序,其工作正常,clinkcolumn字段或自定义字段不工作

<?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())'
                       ),
                   )
                 ),
              ),
          ));
?>

尝试在排序属性数组中添加属性:

$dataProviderInActive->sort->attributes['collection_title']=array(
                                   'asc'=>'collection_title',
                                   'desc'=>'collection_title DESC');

你的问题没有全部细节。如果这是一个自定义字段,则必须根据对象类型显式定义排序。例如,我对CArrayDataProvider对象执行了此操作,如下所示。您需要在模型中执行此操作。同样,答案取决于对象类型。在我的示例中,$rawData是从数据库查询返回的数据

return new CArrayDataProvider($rawData, array(
        'id'=>'id',
        'sort'=>array(
            'attributes'=>array(
                'attribute1',
                'attribute2',
            ),
        ),
        'pagination'=>array(
            'pageSize'=>50,
        ),
    ));

正如@marooned所说,您应该添加代码的更多细节来帮助您。我要求CLinkColumn不能以任何方式对该列启用排序