Yii中的Ajax分页和CListview(转)

本文深入探讨了Yii框架中Ajax分页的多种实现方式,包括传统方法和利用CListview简化操作。详细介绍了如何在控制器中配置分页并使用CListview进行数据渲染,实现Ajax驱动的动态页面更新,提高用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YII中ajax分页有多种实现方法,比较传统的就是在view中写JS来实现,大概的就是这样:

在view中js大概逻辑是这样:

1$('#listview .yiiPager a').live('click',function(){
2        $.ajax({
3            url:$(this).attr('href'),
4            success:function(html){
5                $('#listview').html(html);
6            }
7        });
8        return false;//阻止a标签
9    });

然后在controller中判断ajax请求,再使用renderPartial方法渲染局部List视图,然后局部视图会被view中的ajax

方法填充到局部刷新的div中。controller的大概逻辑是:

1if (Yii::app()->request->isAjaxRequest) {
2$this->renderPartial('_comments',array(
3    'model' => $model,
4    'comments' => $comments,//在局部视图中foreach得到每条数据
5    'pages' => $pages,
6   ));
7    Yii::app()->end();
8

后来发现YII中的CListview更方便,封装了分页,foreach显示list,还支持数据排序。具体的可以在YII的API手册

中发掘。使用CListview是默认ajax分页的,使用方法如下:

controller中:

01$criteria = new CDbCriteria();
02$criteria->order = '`create_time` DESC';
03 
04$dataProvider = new CActiveDataProvider('Comments', array(
05    'pagination'=>array(
06      'pageSize'=>Yii::app()->params['commentsPerPage'],//设置分页条数以确定取出数据的条数
07  ),
08  'criteria'=>$criteria,
09  ));
10$this->render('comments',array(
11         'model' => $model,
12         'dataProvider' => $dataProvider,
13));

然后在view中:

01<?php $this->widget('zii.widgets.CListView', array(
02  'dataProvider'=>$dataProvider,
03  'itemView'=>'_comments',
04  //'ajaxUpdate'=> false,//这样就不会AJAX翻页
05  'pager' => array(//pager 的配置信息。默认为<code>array('class'=>'CLinkPager')</code>.也可以自己配置
06   'nextPageLabel' => '下一页 »',
07   'prevPageLabel' => '« 上一页'
08  ),
09//在这里还可以配置一些排序规则,具体可以查阅手册
10)); ?>

这样就实现了Ajax分页,很方便。

转载于:https://www.cnblogs.com/listenRain/archive/2013/06/15/Ajax.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值