Kategorien

Suchen


Aktuelle Artikel

Archiv


« | Startseite | »

Yii: Anzahl der Zeilen im Grid per DropDown auswählen (pagesize)

Günther | 10.01.2012

Um in einer Yii Tabelle (“zii.widgets.grid.CGridView”) die Anzahl der angezeigten Zeilen durch den Benutzer dynamisch auswählen zu lassen, zeigt Ihnen dieser Artikel eine Lösung:

Beispielansicht:


 
 
 
 

Dafür sind in drei Dateien kleine Anpassungen notwendig:

(1) Im Controller (“protected/controllers/xxxController.php”):

1
2
3
4
5
6
7
8
public function actionAdmin() {
  // [...]
  if (isset($_GET['pageSize'])) {
    Yii::app()->user->setState('pageSize',(int)$_GET['pageSize']);
    unset($_GET['pageSize']);
  }
  // [...]
}

(2) Im Model (“protected/models/xxx.php”);

1
2
3
4
5
6
7
8
9
public function search() {
  // [...]
  return new CActiveDataProvider(get_class($this), array(
    "pagination" => array(
      "pageSize" => Yii::app()->user->getState("pageSize",Yii::app()->params['defaultPageSize']),
    ),
    "criteria" => $criteria,
  ));
}

(3) Im View (“protected/views/xxx/admin.php”):

1
2
3
4
5
6
7
8
9
10
11
12
13
$pageSize=Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']);
$this->widget('zii.widgets.grid.CGridView', array(
  "id" => "xxx-grid",
  "dataProvider" => $model->search(),
  // [...]
  array(
    "class" => "CButtonColumn",
    "header" => CHtml::dropDownList('pageSize',$pageSize,array(10=>10,20=>20,50=>50,100=>100,999999=>"Alles"),array(
      "onchange" => "$.fn.yiiGridView.update('xxx-grid',{ data:{pageSize: $(this).val() }})",
      )),
    ),
  ),
));

Bitte nicht vergessen, bei Schritt (3) auch den Namen der Tabelle (im Beispiel “xxx-grid”) auch im “onChange” Event anzupassen. Ansonsten reagiert die Anzeige nicht auf den Wechsel der Auswahl und bleibt stets auf der Standard-Anzahl.

Kategorie: Yii | 1 Kommentar »

Eine Antwort auf “Yii: Anzahl der Zeilen im Grid per DropDown auswählen (pagesize)”

  1. toni meint:
    20.02.2012 um 18:27

    Hi Günther,
    danke für dein Grid Tutorial!
    Kämpfe gerade mit CGridView mit MANY2MANY Beziehungen rum ;)

Kommentare