1

我正在准备在我的项目中进行下拉分页,但它无法正常工作。无论我在下拉列表中选择什么数字,它仍然会在页面中显示 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'),
4

1 回答 1

0

您正在执行 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.. )
));
?>
于 2014-03-22T08:27:23.903 回答