Yii: Anzahl der Zeilen im Grid per DropDown auswählen (pagesize) – Your Help Center
Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
10. Jan 2012
Teaser

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

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”):

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”);

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”):

$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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

drei + fünf =