页面大小下拉列表和CListView在yii中不起作用

时间:2014-03-22 06:27:10

标签: php drop-down-menu yii yii-extensions page-size

我正在努力在我的项目中进行下拉分页,但它无法正常工作。 无论我在下拉列表中选择哪个号码,它仍然会在页面中显示10个项目。 我缺少什么?

谢谢。

Screenshot

观看代码:

 <?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 个答案:

答案 0 :(得分:0)

您正在进行ajax调用,但在您的小部件中,您没有声明要更新的任何更新部件。 ajaxUpdate是解决方案。

您在使用CListView时正在使用'onchange'=>"$.fn.yiiGridView.update,因此将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.. )
));
?>