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

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 に答える