`

YII分页

    博客分类:
  • Yii
 
阅读更多

 

'defaultOrder'=>array('title' => false), false是升序,true是倒叙

1.自定义分页

使用CPagination呈现相关信息到页码. 当数据需要渲染到多页时,我们可能使用去呈现信息,诸如itemCount, pageSize, currentPage,等等. 这些信息被传递到pagers

Java代码   收藏代码
  1. $sql = "SELECT * FROM USER";  
  2. $data = Yii::app()->db->createCommand($sql)->queryAll();  
  3.   
  4. $sql2 = "SELECT count(*) FROM USER";  
  5. $count = Yii::app()->db->createCommand($sql2)->queryScalar();  
  6.   
  7. $pages = new CPagination($count);                
  8. $pages->pageSize = 4;  
  9. //$pages->setCurrentPage(2);  
  10. $pdata =Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");  
  11. $pdata->bindValue(':offset', $pages->currentPage*$pages->pageSize);//$pages->getOffset();  
  12. $pdata->bindValue(':limit', $pages->pageSize);//$pages->getLimit();  
  13. $info = $pdata->queryAll();  

PostController.php

Java代码   收藏代码
  1. <?php  
  2. class PostController extends Controller  
  3. {  
  4.     function actionIndex()  
  5.     {  
  6.         $criteria = new CDbCriteria();    
  7.         $criteria->compare("log_id",">0");   
  8.         $count=Ipad3SerialNumber::model()->count($criteria);    
  9.   
  10.         $pages=new CPagination($count);    
  11.         // elements per page    
  12.         $pages->pageSize=2;    
  13.         $pages->applyLimit($criteria);    
  14.   
  15.         // sorting    
  16.         $sort = new CSort('Ipad3SerialNumber');    
  17.         $sort->attributes = array(    
  18.             'number',  
  19.             'get_time'    
  20.         );  
  21.         $sort->defaultOrder = array('get_time'=>true);  
  22.         $sort->applyOrder($criteria);    
  23.   
  24.         $models = Ipad3SerialNumber::model()->findAll($criteria);    
  25.         $this->render('list', array(    
  26.             'models' => $models,    
  27.             'pages' => $pages,    
  28.             'sort' => $sort,    
  29.         ));   
  30.     }  
  31. }  

 view

Java代码   收藏代码
  1. <?php  
  2. <p><?php echo $sort->link('id')?></p>  
  3. <p><?php echo $sort->link('title')?></p>  
  4. <ol>  
  5. <?php foreach($models as $model):?>  
  6. <li>  
  7. <h2><?php echo $model->id?> - <?php echo $model->title?></h2>  
  8. </li>  
  9. <?php endforeach?>  
  10. </ol>  
  11. <?php $this->widget('CLinkPager', array(  
  12.     'pages' => $pages,  
  13.     'header'=>''  
  14. ));  
  15. $this->widget('CListPager', array(    
  16.     'pages'=>$pages,   
  17.     'header'=>'-'  
  18. ));  
  19. ?>  

点击$sort的link可以动态排序

 

2系统也有封装的分页 ,排序GRID

enableSorting=false全部禁用排序,单列禁用排序sortable =false,enablePagination=false

Java代码   收藏代码
  1. public function actionAR(){  
  2.     /****用法一:*****/  
  3.     $criteria = new CDbCriteria();    
  4.     $criteria->compare('serviceType',$arr);  
  5.     $dataProvider=new CActiveDataProvider('Post',array(  
  6.         'criteria' => $criteria,  
  7.     ));  
  8.   
  9.     /****用法二:*****/  
  10.     $dataProvider=new CActiveDataProvider('Post', array(  
  11.         /*'criteria'=>array( 
  12.             'condition'=>'status=1 AND tags like :tags', 
  13.             'params'=>array(':tags'=>$_GET['tags']), 
  14.             'order'=>'create_time DESC', 
  15.             'with'=>array('author'), 
  16.         ),*/  
  17.         'pagination'=>array(  
  18.             'pageSize'=>100,  
  19.         ),  
  20.         'sort'=>array(  
  21.             'defaultOrder'=> array('title'=>true),  
  22.         ),  
  23.     ));  
  24.     $this->render('index', array(  
  25.         'dataProvider' => $dataProvider,  
  26.     ));  
  27. }  
  28.   
  29. public function actionArray(){ //推荐不用,数组大内存溢出  
  30.     $rawData= array(array(  
  31.         'name'=>'István Beregszászi',  
  32.         'duty'=>'core framework development',  
  33.         'active'=>false,  
  34.     ));  
  35.     //$rawData=Yii::app()->db->createCommand($sql)->queryAll();  
  36.     $dataProvider = new CArrayDataProvider($rawData, array(  
  37.         'sort'=>array(  
  38.             'attributes'=>array('name''id''active'),  
  39.             'defaultOrder'=>array('active' => true'name' => false),  
  40.         ),  
  41.         'pagination'=>array(  
  42.             'pageSize'=>10,  
  43.         ),  
  44.     ));  
  45.     $this->render('index', array(  
  46.         'dataProvider' => $dataProvider,  
  47.     ));  
  48. }  
  49.   
  50. public function actionSQL(){  
  51.     $count = Yii::app()->db->createCommand('SELECT COUNT(*) FROM film')->queryScalar();  
  52.     $sql = 'SELECT film_id,title FROM film';  
  53.     $dataProvider=new CSqlDataProvider($sql,array(  
  54.         'keyField'=>'film_id',  //sql in select table column default id  
  55.         'totalItemCount'=>$count,  
  56.         'sort'=>array(  
  57.             'attributes'=>array('title'), //sql table columns  
  58.             'defaultOrder'=>array('title' => true),  
  59.         ),  
  60.         'pagination'=>array(  
  61.             'pageSize'=>100,  
  62.         ),  
  63.     ));  
  64.     $this->render('index', array(  
  65.         'dataProvider' => $dataProvider,  
  66.     ));  
  67. }  

 view

Java代码   收藏代码
  1. <?php foreach($dataProvider->data as $film):?>  
  2. <?php echo $film->title?>  
  3. <?php endforeach?>  
  4. <?php $this->widget('CLinkPager',array(  
  5. 'pages'=>$dataProvider->pagination))?>  

也可以套CGridView(推荐) summaryText,{summary}自定义总计信息

Java代码   收藏代码
  1. <?php  
  2. $this->widget('zii.widgets.grid.CGridView', array(  
  3.     'dataProvider'=>$dataProvider,  
  4.     'template'=>'{items}{summary}{pager}',  
  5.     'summaryText'=>"第{start}-{end}条, 共 {count} 条,页数:{page}/{pages}页",  
  6.     'columns'=>array(  
  7.         array(    
  8.             'name' => 'title',     
  9.             'header' => '订单号',   
  10.             'value'=>'$data[title]',  //if is_array  
  11.         )    
  12.     ),  
  13. ));?>  

PS:在CGridView中显示当前是第几页可以用: 

$this->grid->dataProvider->pagination->currentPage
 

 

3分页扩展

mypager是 一个非常简单的 扩展 , 结合在一个 CListPager 和 CLinkPager , 允许 用户选择 他们想要 去 或者点击 一个页面 按钮 CLinkPager ) , 或 选择 从 下拉列表中 的 页面 ( CListPager ) 页 CGridView 。 
CLinkPager首页,末页CSS默认不显示
Page.css代码   收藏代码
  1. /**  
  2.  * Hide first and last buttons by default.  
  3.  */  
  4. ul.yiiPager .first,  
  5. ul.yiiPager .last  
  6. {  
  7.     display:none;  
  8. }  

 

Java代码   收藏代码
  1. <?php $this->widget('zii.widgets.grid.CGridView', array(  
  2.     'id'=>'customer-grid',  
  3.     'dataProvider'=>$model->search(),  
  4.     'pager'=>array(  
  5.         //'class'=>'CLinkPager', //LinkListPager  
  6.         'maxButtonCount'=>8,  
  7.         'firstPageLabel'=>'首页',  
  8.         'lastPageLabel'=>'末页',  
  9.         'nextPageLabel'=>'下一页',  
  10.         'prevPageLabel'=>'上一页',  
  11.         'header'=>'',  
  12.         'cssFile'=>false,    //如果使用主css文件,那么这里可以写false,如果使用其它附加css文件,我们这里填写css文件名。  
  13.     ),   
  14. ));?>  

 转自:http://hudeyong926.iteye.com/blog/1320625

分享到:
评论

相关推荐

    yii分页组件用法实例分析

    接下来我们将详细介绍Yii分页组件的用法,包括它在实际项目中的应用,以及如何结合实例来分析。 首先,需要明白的是Yii分页组件的定位。在Yii框架中,分页组件是作为一个独立的组件存在,我们可以将其配置在...

    Yii分页用法实例详解

    下面我总结了在Yii常用的一些yii分页方式与实例代码,这里有普通分页与ajax实现分页,希望此文章对大家会有所帮助。 第一种:CListView分页 针对对象形式的数据分页 Controller: 复制代码 代码如下:public function...

    YII实现分页的方法

    本文以实例代码简述了yii实现分页的方法,供学习yii的朋友参考,具体代码如下: 1.控制器部分代码:  public function actionTest() { $criteria=new CDbCriteria; $criteria-&gt;order='id DESC'; $count=User::...

    YII 分页排序

    **YII框架中的分页与排序** YII是一款高性能的PHP框架,用于开发Web 2.0应用。在处理大量数据时,分页和排序功能是必不可少的,它们能提高用户体验,使用户能够轻松地浏览和查找所需信息。在本篇文章中,我们将深入...

    datagrid+yii2分页查询

    在本文中,我们将深入探讨如何在Yii2框架中结合Datagrid实现数据的分页查询功能,同时涵盖用户登录注册、数据删除与修改等关键点。Yii2是一个高性能、易用且富有灵活性的PHP框架,而Datagrid是它的一个重要组件,...

    yii框架使用分页的方法分析

    Yii 提供了简单易用的分页机制,本文将详细介绍两种在 Yii 中实现分页的方法。 1. 在控制器(Controller)中实现分页: 在 Yii 中,分页通常在控制器中进行初始化和配置。以下展示了两种方法: **方法一:** ```...

    Yii实现简单分页的方法

    以下是实现Yii分页功能的关键步骤: 1. 在控制器(Controller)中创建分页数据的逻辑。通过控制器来创建一个CDbCriteria对象,用于指定如何从数据库中读取数据。然后使用CPagination对象,并将数据总数量传递给...

    详解Yii实现分页的两种方法

    Yii实现分页的两种方法,一种是用DAO实现,另外一种是在widget实现. 各有优点吧,第一种效率会高一点, 第二种可以使用自带的表格,方便一些. 一. DAO实现分页.  [Controller层] public function actionReport() { ...

    yii使用bootstrap分页样式的实例

    Yii 框架结合 Bootstrap 创建分页样式是一个常见的需求,特别是在构建现代响应式网页应用时。Bootstrap 是一个广泛使用的前端框架,它包含了一系列预定义的 CSS 和 HTML 规范,可以快速构建美观、响应式的界面。这个...

    Yii1.1中通过Sql查询进行的分页操作方法

    $user = Yii::app()-&gt;user; $id = $user-&gt;id; $connection=Yii::app()-&gt;db; $sql= sql查询语句; $command = $connection-&gt;createCommand($sql)-&gt;queryAll(); $pages = new CPagination(count($command)); $...

    Yii2分页的使用及其扩展方法详解

    Yii2框架内置了分页功能,即Pagination类,以及一个非常灵活的分页控件LinkPager,可以通过扩展实现各种自定义的分页效果。 ### Yii2分页的使用方法 首先,要使用Yii2的分页功能,需要在控制器(Controller)中...

    Yii使用CLinkPager分页实例详解

    CLinkPager是Yii框架中用于实现数据分页显示的一个组件,该组件能够生成一个链接列表,通过这些链接用户可以访问数据的不同页面。本文将详细介绍Yii中使用CLinkPager进行数据分页显示的实例。 首先,CLinkPager继承...

    yii CDbCriteria多条件搜索后分页

    我最近接触yii总结的一点经验,希望能帮助大家

    Yii视图操作之自定义分页实现方法

    本文重点介绍Yii框架下的视图操作之自定义分页实现方法,涵盖了从调用分页方法、复制修改基类分页类文件,到通过CSS样式文件进行分页外观的定制等方面的知识。 在Yii框架中,分页功能通常在视图层通过CGridView和...

Global site tag (gtag.js) - Google Analytics