【问题标题】:Yii ClistView pagination not workingYii ClistView 分页不起作用
【发布时间】:2013-03-22 15:03:16
【问题描述】:

我的 Clistview 分页无法正常工作。我尝试了所有方法但仍然没有成功。这是我的模型函数:

public function getallone()
{
    $criteria = new CDbCriteria;
    $criteria->select   =   "t.id"; 
    $criteria->condition = "t.featured=1 AND t.status = 1";
            return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
                'pagination' => array('pageSize' => 25),

    ));
}

我仍然每页只有 10 个项目,但我想要 25 个。我尝试了 2 个项目,但它也不起作用。有什么问题吗?没找到。

这是我的视图代码:

<?php $this->widget('zii.widgets.CListView', array(
        'dataProvider'=>$model->getallone(),
        'itemView'=>'_allone',

        'enablePagination' => true,
        )); ?>

【问题讨论】:

    标签: yii pagination


    【解决方案1】:

    你应该试试这个以获得更好的分页选项

    $condition='type=:type';
    $dataArray[':type']=$type;
    $dataProvider=new CActiveDataProvider('modelname', array(
            'criteria'=>array(
             'select'=>'*',
                'condition'=>$condition,
                'params'=>$dataArray,
                'order'=>'id DESC',
                'offset'=>($page-1)*$limit,
                'limit'=>$limit,
             ),
            'pagination'=>array(
                'pageSize'=>$limit,
    
        ),
        ));
    
      $totalActivity= $dataProvider->getTotalItemCount();
    

    http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider供参考

    【讨论】:

    • $limit 声明在哪里?
    • 限制你可以根据需要设置,我只是添加了分页结构。
    【解决方案2】:

    尝试使用CArrayDataProvider

    这是怎么做的:

    public function actionIndex() {
            $command = Yii::app()->db->createCommand("
                SELECT u.id as u_id, u.link as u_link, u.title as u_title, u.description as u_description, u.public as u_public, u.created as u_created, u.status as u_status, w.id as w_id, w.domain as w_domain, w.status as w_status
                from url as u
                left join website as w
                    on w.id = u.website_id
                where u.title!='null' and u.status = 1 and w.status = 1 and u.public = 1;
                ");
            $news = $command->queryAll();
            $dataProvider = new CArrayDataProvider($news, array(
                        'id' => 'user',
                        'keyField' => 'u_id',
                        'sort' => array(
                            'defaultOrder' => 'u_id desc',
                        ),
                        'pagination' => array(
                            'pageSize' => 10,
                        ),
                    ));
            $model_website = Website::model()->findAllByAttributes(array('status' => 1), array('limit' => 30, 'order' => 'id desc'));
            $this->render('index', array(
                'model_website' => $model_website,
                'dataProvider' => $dataProvider,
            ));
        }
    

    和 clistview:

        $this->widget('zii.widgets.CListView', array(
            'dataProvider' => $dataProvider,
            'template' => "{summary}\n{pager}\n{items}\n{summary}\n{pager}",
            'itemView' => '_index',
            'pager' => array(
                'maxButtonCount' => 10,
            ),
                )
        );
    

    【讨论】:

    • 感谢您的回复,但它在代码中增加了复杂性,这不是我之前所说的我已经尝试过所有(包括 carray、csql)数据提供程序的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2012-08-24
    • 2015-03-09
    • 2013-11-12
    • 1970-01-01
    相关资源
    最近更新 更多