CArrayDataProvider mit CGridView Paginierung Yii

Ich versuche zu tun, eine Paginierung auf eine CGridView mit CArrayDataProvider (meine $rawData ist eine benutzerdefinierte array - nicht aus einer DB/Modell).
Also, In der controller-action eine der folgenden Optionen:

$form = new SearchUser;//here I have SearchUser form that extends CFormModel with the following attributes: 'id', 'name', 'surname', 'phone', 'address'
$users = array();
if (isset($_POST['SearchUser'])) {
....//prepare users array from my custom source-> not from DB/models etc
}

$dataProvider=new CArrayDataProvider($users, array(
            'id'=>'id',
            'keys'=>array('name', 'surname', 'phone', 'address'),
            'sort'=>array(
                'attributes'=>array(
                    'name', 'surname', 'phone', 'address'
                ),
            ),
            'pagination'=>array(
                'pageSize'=>15,
            ),
        ));

Und:

$this->render('index', array('dataProvider'=>$dataProvider, 'form'=>$form));

Auf index.php ich habe:

...
<?php echo CHtml::link('Search','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search',array(
'model'=>$form,
)); ?>
</div><!-- search-form -->
<?php

$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(

    array(
        'name' => 'Name',          
        'type' => 'raw',
        'value' => 'CHtml::encode(@$data["name"])'
    ),
    array(
        'name' => 'Surname',          
        'type' => 'raw',
        'value' => 'CHtml::encode(@$data["surname"])'
    ),/*
    array(
        'name' => 'Phone',          
        'type' => 'raw',
        'value' => 'CHtml::encode(@$data["phone"])'
    ),*/
    array(
        'name' => 'Address',          
        'type' => 'raw',
        'value' => 'CHtml::encode(@$data["address"])'
    ),
),
'enablePagination'=> true,
));

Die erste Seite wird korrekt angezeigt, aber wenn ich wählen Sie eine andere Seite, mein filter geht verloren und alle Daten werden im raster angezeigt statt "gefiltert" ersetzt.

  • In Ihrer url haben Sie ?page=...?
  • Ich habe so etwas wie dieses: &id_page=2
InformationsquelleAutor Larry | 2013-04-18
Schreibe einen Kommentar