Yii CGridView模型集默认排序顺序

Muh*_*zad 4 php yii

我的Yii CGridView排序不是这样的

public function search() {
   $criteria = new CDbCriteria;
   $criteria->order = "member_id DESC";
Run Code Online (Sandbox Code Playgroud)

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

   $criteria->order = "member_id DESC";`
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*iew 10

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

修改你的回报:

return new CActiveDataProvider($this, array(
    'criteria' => $criteria,
    'sort' => array(
        'defaultOrder' => 'member_id DESC',
    ),
));
Run Code Online (Sandbox Code Playgroud)


Hea*_*man 6

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

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

执行任务的语法是

    $dataProvider = new CActiveDataProvider('YourModel',
                    array(
                        'sort' => array('defaultOrder' => 'member_id DESC')
                    ));
Run Code Online (Sandbox Code Playgroud)

将此$ dataProvider传递给您的视图

    $this->render('YourView', array(
        'dataProvider' => $dataProvider
    ));
Run Code Online (Sandbox Code Playgroud)

因为你想在CGridView中呈现结果

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


Muh*_*zad 5

我认为问题在这里

$criteria->order = "member_id DESC";
Run Code Online (Sandbox Code Playgroud)

只需删除此行,然后添加

   return new CActiveDataProvider($this,array(               
            'criteria'=>$criteria,
            'sort'=>array(
                        'defaultOrder'=>'member_id DESC',
                    ),
        ));
Run Code Online (Sandbox Code Playgroud)

希望它会对你有所帮助.