Yii CGridView模型集默认排序顺序

时间:2013-07-23 04:38:38

标签: php yii

时,我的Yii CGridView排序不能正常工作
public function search() {
   $criteria = new CDbCriteria;
   $criteria->order = "member_id DESC";

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

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

排序工作正常。我希望默认显示记录order by member_id desc

3 个答案:

答案 0 :(得分:10)

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

修改你的回报:

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

答案 1 :(得分:7)

使用CActiveDataProvider:在此类CActiveDataProvider中,您可以找到属性defaultOrder,以根据数据库表列名称在网格视图中设置defult可见顺序。

defaultOrder: defaultOrder是CActiveDataProvider类中的属性。此属性属于类CSort。当CActiveDataProvider类继承CSort时,defaultOrder属性成为CActiveDataProvider的属性。

执行任务的语法是

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

答案 2 :(得分:5)

我认为问题在这里

$criteria->order = "member_id DESC";

只需删除此行,然后添加

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

希望它会对你有所帮助。