Раскрывающийся список размера страницы и CListView не работают в yii

Я пытаюсь сделать нумерацию страниц в моем проекте, но он работает неправильно. Какой бы номер я ни выбрал в выпадающем списке, он все равно показывает 10 элементов на странице. Чего мне не хватает?

Спасибо.

Скриншот

Код вида:

 <?php
    //$dataProvider->pagination->pageSize = 25;

    $pageSize=Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']); 
    echo CHtml::dropDownList('pageSize',$pageSize,array(5=>5,10=>10,15=>15,20=>20,25=>25,30=>30),
    array('onchange'=>"$.fn.yiiGridView.update('packages-grid',{ data:{pageSize: $(this).val() }})",
    'empty'=>'-- Select Page Range --','style'=>'width:198px;'));

    $this->widget('zii.widgets.CListView', array(
        'id'=>'propertylistview',
        'dataProvider'=>$dataProvider,
            'summaryText'=>'',
        'itemView'=>'_propertyview',
            'sortableAttributes' => array(
                .........
             )
     ));
    ?>

Код контроллера:

public function actionAdmin(){         
if (isset($_GET['pageSize'])) {
 Yii::app()->user->setState('pageSize',(int)$_GET['pageSize']);
 unset($_GET['pageSize']);}
    $model=new Packages('search');
    $model->unsetAttributes(); 
    if(isset($_GET['Packages']))
        $model->attributes=$_GET['Packages'];       
        $dataProvider=new CActiveDataProvider('Packages'); 
    $this->render('admin',array('model'=>$model,'dataProvider'=>$dataProvider,
    ));
}

Я уже добавил это к поиску модели

return new CActiveDataProvider(get_class($this),array(
            'pagination'=>array(
                'pageSize'=> Yii::app()->user->getState('pageSize',Yii::app()->params['defaultPageSize']),
            ),
            'criteria'=>$criteria,
    )); 

и это в config/main.php

'params'=>array('defaultPageSize'=> '10'),

1 ответ

Решение

Вы делаете вызов ajax, но в своем виджете вы не указываете какую-либо часть обновления для обновления. ajaxUpdate это решение.

И вы используете 'onchange'=>"$.fn.yiiGridView.update при использовании CListView, поэтому измените JS на 'onchange'=>"$.fn.yiiListView.update а также:

<?php
// your code    
$this->widget('zii.widgets.CListView', array(
   'id'=>'propertylistview',
   'ajaxUpdate' => 'propertylistview', //add this line
   'dataProvider'=>$dataProvider,
   'summaryText'=>'',
   'itemView'=>'_propertyview',
   'sortableAttributes' => array(
   //etc.. )
));
?>
Другие вопросы по тегам