4

我的 Yii CGridView 排序在以下情况下不起作用

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

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

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

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

4

3 回答 3

10

Remove this line $criteria->order = "member_id DESC";

Amend your return:

return new CActiveDataProvider($this, array(
    'criteria' => $criteria,
    'sort' => array(
        'defaultOrder' => 'member_id DESC',
    ),
));
于 2013-07-23T04:46:16.560 回答
6

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

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'),
        ),
    ));       
于 2013-07-23T06:49:15.830 回答
5

我认为问题就在这里

$criteria->order = "member_id DESC";

只需删除此行,然后添加

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

希望对您有所帮助。

于 2013-07-23T07:39:25.893 回答