Yii CGridView模型设置默认排序顺序


Yii CGridView Model Set Default Sorting Order

当时,我的Yii CGridView排序不以这种方式工作

public function search() {
   $criteria = new CDbCriteria;
   $criteria->order = "member_id DESC";

当我点击CGridView中的标题菜单时,它不起作用,但当我删除时

   $criteria->order = "member_id DESC";`

排序工作正常。我想在默认情况下显示记录order by member_id desc

删除此行$criteria->order = "member_id DESC";

修改您的报税表:

return new CActiveDataProvider($this, array(
    'criteria' => $criteria,
    'sort' => array(
        'defaultOrder' => 'member_id DESC',
    ),
));

使用CActiveDataProvider:在此类CActiveData Provider中,您可以找到属性defaultOrder,以便在网格视图中设置相对于数据库表列名的取消可见顺序。

defaultOrder:defaultOrder是CActiveDataProvider类中的一个属性。此属性属于CSort类。由于类CActiveDataProvider继承了CSort,defaultOrder属性变成了CActiveData Provider的属性。

完成任务的语法是

    $dataProvider = new CActiveDataProvider('YourModel',
                    array(
                        'sort' => array('defaultOrder' => 'member_id DESC')
                    ));

将此$dataProvider传递到您的视图

    $this->render('YourView', array(
        'dataProvider' => $dataProvider
    ));

如果您想在CGridView 中显示结果

    $this->widget('zii.widgets.grid.CGridView', array(
        'id' => 'data-grid',
        'dataProvider' => $model->search(),            
        'columns' => array(                
            'column1',
            'column2',
            'column3',
            array('class' => 'CButtonColumn'),
        ),
    ));       

我认为有问题

$criteria->order = "member_id DESC";

只需删除此行,然后添加

   return new CActiveDataProvider($this,array(               
            'criteria'=>$criteria,
            'sort'=>array(
                        'defaultOrder'=>'member_id DESC',
                    ),
        ));

希望对你有帮助。