Yii实现分页的两种方法,一种是用DAO实现,另外一种是在widget实现.

各有优点吧,第一种效率会高一点, 第二种可以使用自带的表格,方便一些.

一. DAO实现分页.

[Controller层]

1 public function actionReport()
2 {
3 $sql = "select remitdate, sum(rate) sumrate from td_delivery
4 group by remitdate
5 order by remitdate desc";
6 $criteria=new CDbCriteria();
7 $result = Yii::app()->db->createCommand($sql)->query();
8 $pages=new CPagination($result->rowCount);
9 $pages->pageSize=2;
10 $pages->applyLimit($criteria);
11 $result=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");
12 $result->bindValue(':offset', $pages->currentPage*$pages->pageSize);
13 $result->bindValue(':limit', $pages->pageSize);
14 $posts=$result->query();
15 $this->render('report',array(
16 'posts'=>$posts,
17 'pages'=>$pages,
18 ));
19 }

[View层]

1 <?php foreach($posts as $row):?>
2  <?php echo CHtml::link($row["remitdate"],array('delivery/view','remitdate'=>$row["sumrate"]));?>
3  <?php echo $row["sumrate"]."<br />" ?>
4  <?php endforeach;?>
5  <?php
6  //分页widget代码:
7  $this->widget('CLinkPager',array('pages'=>$pages));
8  ?>

优点: DAO效率高; 缺点: view层需要自己写一些样式,稍显麻烦一点

二. widget实现分页

[model层]

1 /**
2 * @var string attribute : 日运费 (统计用)
3 * 需要对新增加的字段做个声明
4 */
5 public $dayrate;
6
7
8 /*
9 * 统计功能: 统计每日的运费
10 */
11 public function statistics()
12 {
13 $criteria = new CDbCriteria;
14 $criteria->select = 'remitdate, sum(rate) AS dayrate';
15 $criteria->group = 'remitdate';
16
17 return new CActiveDataProvider(get_class($this), array(
18 'criteria'=>$criteria,
19 'sort'=>array(
20 // 表头设置点击排序的字段
21 'attributes'=>array(
22 'remitdate',
23 'dayrate'=>array(
24 'asc'=>'dayrate',
25 'desc'=>'dayrate DESC',
26 )
27 ),
28 'defaultOrder'=>'remitdate desc',
29 ),
30 ));
31 }

[Controller层]

1 /**
2 * 运单统计功能:
3 * 按日期统计
4 */
5 public function actionReport()
6 {
7 $model=new Delivery('statistics');
8 $model->unsetAttributes(); // clear any default values
9  
10 $this->render('report',array(
11 'model'=>$model,
12 ));
13 }

[View层]

1 <?php $this->widget('zii.widgets.grid.CGridView', array(
2 'id'=>'delivery-grid',
3 'dataProvider'=>$model->statistics(),
4 'filter'=>$model,
5 'columns'=>array(
6 'remitdate',
7 'dayrate',
8 array(
9 'class'=>'CButtonColumn',
10 ),
11 ),
12 )); ?>

优点: 可以使用自带的样式; 缺点: 效率略低.

Yii实现分页的两种方法相关推荐

  1. mongoDB分页的两种方法

    http://www.cnblogs.com/xiaolai/p/3401289.html mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的 下面这 ...

  2. Layui数据表格分页通过两种方法实现

    SSM框架+Layui框架实现数据表格分页效果图如下所示: 具体实现方法: 方法一:(基于前台进行分页) 实现思路:主要是后台将全部数据返回到前台,之后前台通过Layui的parseData函数来实现 ...

  3. html按照字数分页,纯javascript实现分页(两种方法)

    先给大家贴效果图: 网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了.其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用 ...

  4. php javascript分页,纯javascript实现分页(两种方法)

    有的时候页面需要很多不同的表组成的数据,该怎么分页呢?使用数据库分页很简单,那么如何使用js实现分页呢?接下来,小编帮大家解决这个问题,需要的朋友一起来学习吧 先给大家贴效果图: 网上确实有很多分页的 ...

  5. Mysql中分页查询两个方法比较

    mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1; SELECT a FROM f ...

  6. MySQL数据库查询时间段的两种方法

    MySQL数据库查询时间段的两种方法: 1. SELECT* FROMgroup_details model WHEREmodel.create_time BETWEEN TO_DAYS ( '201 ...

  7. delphi 读取excel 两种方法

    两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打开,但操作就没有象 操作数据库那么方便了. 一.用ADO连接: 设置属性ConnetionString  选择 Microso ...

  8. php控制windows系统关机,window_winXP系统设置一键关机的两种方法,windows系统关机需要三步,对我 - phpStudy...

    winXP系统设置一键关机的两种方法 windows系统关机需要三步,对我这样的懒人来说实在不方便.在网络上寻找了许多方法,最后用了一个.现在介绍给有需要的人.关机方法是鼠标一点关机或热键关机. 创建 ...

  9. vue实现分页的两种方式

    vue实现分页的两种方式 (1)方法一:使用slice方法 一次调用后端接口返回所有数据tableData,然后使用tableData.slice((currentPage-1)*pageSize,c ...

最新文章

  1. Remoting系列(二)----建立第一个入门程序
  2. python3.6库参考手册_python3.5.2官方帮助文档参考手册(CHM版)
  3. Vue项目构建后通过Nginx/SpringBoot/Express/Egg发布
  4. 关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决
  5. python安装后如何使用-python如何安装下载后的模块
  6. 44.事件分发(示例)
  7. OGG 实现两台Oracle数据库的同步
  8. springboot 多线程_从零开始到架构,800页Java+并发+容器+多线程+高并发+Spring+SpringBoot源码...
  9. 强大的音频、视频嗅探式下载工具,还自带浏览器
  10. html 密码不小于六位怎么设置,192.168.1.1登录入口要六位密码是多少?
  11. Ubuntu打开wps文件缺少字体
  12. 随笔之大学四年生活有感
  13. 深入理解Arduino下的ESP8266_Non-OS_SDK API① Non-OS SDK
  14. clion_gcc报错
  15. logx求x怎么用计算机,logx(logx等于什么)
  16. 跑腿小程序系统,同城闪送、帮买帮送
  17. 迷你播放器--第一阶段(1)--检索媒体音乐并添加到List播放列表
  18. PLINK-GWAS学习3------数据质控之性别质控
  19. 转专业菜鸡的秋招总结
  20. crh寄存器_端口配置寄存器CRH怎么弄?

热门文章

  1. 1/3 常用符号:类型说明符
  2. html-edm(邮件营销)编写规则
  3. RHEL5.X 重启网卡出现./network-functions: line 78: .: ifcfg-eth0: file not found
  4. Vue nextTick 机制
  5. Python:课程期待
  6. 使用MyEclipse将HTML5移动项目迁移到PhoneGap(一)
  7. (转载)树、森林与二叉树的转换
  8. JavaScript 流程控制语句
  9. linux lvm 简介之二 扩充空间
  10. 正确获取硬盘序列号源码