5

Yiiにプロジェクトがあり、CGridViewデフォルトで1ページに10レコードが表示されます。これを100レコードに設定するにはどうすればよいですか?

4

3 に答える 3

11

以下のように、モデルの検索機能で設定できます。

public function search()
{
    $criteria=new CDbCriteria;

    $criteria->compare('id',$this->id,true);
    $criteria->compare('start_year',$this->start_year,true);
    $criteria->compare('end_year',$this->end_year,true);
    $criteria->compare('ref_lang_id',$this->ref_lang_id);
    $criteria->compare('submitted_at',$this->submitted_at,true);
    $criteria->compare('ref_submitted_user_id',$this->ref_submitted_user_id,true);

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
        'pagination' => array(
            'pageSize' => 30,
        ),
    ));
}
于 2013-08-29T04:27:42.653 に答える
7

CGridViewビューでウィジェットがレンダリングされている場所を見つけpagination、データ プロバイダーのプロパティを構成します。

$this->widget('zii.widgets.CGridView', array(
    'dataProvider' => array(
         /* other options for the data provider... */
        'pagination' => array('pageSize' => 100),
    ),
    /* other options for the grid view... */
));
于 2012-04-19T12:44:01.677 に答える
0

ドロップダウンを使用して、ページごとに項目を構成できます。

ここに画像の説明を入力

このようなセクションを作成します。以下の手順に従ってください。

スクリーンショットの「128 件中 1 ~ 10 件を表示」セクションのカスタム テンプレートを定義します。

Gridview プロパティ配列を使用して、このコードを追加します。

'summaryText' => 'Displaying {start}-{end} of {count} result(s). ' .
    CHtml::dropDownList('pageSize', $pageSize, Yii::app()->params['pageSizeOptions'], array('class' => 'change-pageSize')) .' rows per page',

ビューの上部にこの行を追加します

$pageSize = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']);

同じビューに Change イベントを追加します。

jQuery(function ($) {
$('body').on('change','.change-pageSize', function () {
    $.fn.yiiGridView.update('my-grid', {data: {pageSize: $(this).val()}
    })
});
});

モデル検索機能にこの行を追加して、アクティブなデータ プロバイダーで選択された行数を設定します。

$pageSize = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']);

次に、コントローラーで、ビューから ajax を介して送信されたページ サイズ パラメーターを受け取ります。コントローラーで次のコード行を使用します。

if (isset($_GET['pageSize'])) {
                Yii::app()->user->setState('pageSize', (int) $_GET['pageSize']);
            }

この構成を Params.php に追加します。

'defaultPageSize' => 20,
'pageSizeOptions' => array(-1 =>'All' , 10 => 10, 20 => 20, 50 => 50, 100 => 100, 500 => 500),

これは私のために働いた!

于 2018-01-15T06:36:59.403 に答える