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.


Dieser Artikel hat Dir geholfen ?
.. und Dir nerviges Ausprobieren, Suchen und Zeit erspart ?

Dann würde ich mich sehr freuen, wenn Du diese werbefreie Hilfeseite mit einer kleinen Anerkennung unterstützen würdest.
Vielen Dank !
PayPal Donate QR Code

Schreibe einen Kommentar

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

5 × vier =