时,我的Yii CGridView排序不能正常工作
public function search() {
$criteria = new CDbCriteria;
$criteria->order = "member_id DESC";
当我点击CGridView
中的标题菜单时,它不起作用,但是当我删除
$criteria->order = "member_id DESC";`
排序工作正常。我希望默认显示记录order by member_id desc
。
答案 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',
),
));
希望它会对你有所帮助。