Flex使用DataGrid实现的分页显示在线运行效果见:http://tongqiuyan.blog.163.com/blog/static/19554530220119267352154/

静态效果:

通过提供的“首页”、“上一页”、“下一页”、“末页”和“跳转”等按钮,能够随意显示相关页面的数据。

相关源码如下:

分页组件代码


   
   
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="initData(dataProvider);">  
  3.     <mx:Script>  
  4.         <![CDATA[  
  5.             import mx.collections.ArrayCollection;  
  6.             // 当前需要显示的记录  
  7.             [Bindable]  
  8.             private var mypagedata:ArrayCollection = new ArrayCollection();  
  9.             [Bindable]  
  10.             public var columns:Array; // 数据集合  
  11.             public var dataProvider:ArrayCollection; // 所有数据  
  12.             public var pageCount:int = 6;// 每页包含的记录数,默认6条  
  13.             public var curPage:int; // 当前页码  
  14.             public var totalPage:int; // 总页数  
  15.             public var totalCount:int; // 总记录条数  
  16.             public function initData(value:ArrayCollection):void  
  17.             {  
  18.                 // 将所有的数据都赋值给 dataProvider 变量  
  19.                 dataProvider = value;  
  20.                 // 移除当前页面中所有数据记录  
  21.                 mypagedata.removeAll();  
  22.                 if(null != dataProvider && dataProvider.length > 0)  
  23.                 {  
  24.                     totalCount = dataProvider.length;  
  25.                     totalPage = (totalCount + pageCount -1)/pageCount;  
  26.                     setPager(0);  
  27.                     inputpage.minimum=1;  
  28.                     inputpage.maximum= totalPage;  
  29.                 }else{  
  30.                     totalCount = 0;  
  31.                     totalPage = 0;  
  32.                     curPage = 0;  
  33.                     inputpage.minimum=0;  
  34.                     inputpage.maximum= 0;  
  35.                     pagedetail.text = "第 0 页/共 0 页 共 0 条记录";  
  36.                 }  
  37.             }  
  38.             public function setPager(value:int):void  
  39.             {  
  40.                 if(value <0 || (value+1)>totalPage){  
  41.                     return;  
  42.                 }  
  43.                 curPage = value;  
  44.                 // 计算跳转到页面中的第一条记录所在记录中是第几条记录  
  45.                 var curNum : int = value*pageCount;  
  46.                 // 清空当前显示的数据记录  
  47.                 mypagedata.removeAll();  
  48.                 for(var i:int = 0; curNum<dataProvider.length&&i<pageCount; i++,curNum++){  
  49.                     mypagedata.addItem(dataProvider.getItemAt(curNum));  
  50.                 }  
  51.                 var temp:int=curPage+1;  
  52.                 pagedetail.text = "第 "+temp+" 页/共 "+totalPage+" 页 共 "+totalCount+" 条记录";  
  53.                 cudg.dataProvider = mypagedata;  
  54.             }  
  55.         ]]>  
  56.     </mx:Script>  
  57.     <mx:DataGrid id="cudg" columns="{columns}" width="100%" height="100%" />  
  58.     <mx:HBox verticalAlign="middle" horizontalAlign="center">  
  59.         <mx:Label text="第 0 页/共 0 页" id="pagedetail" />  
  60.         <mx:LinkButton label="首页" click="setPager(0);" />  
  61.         <mx:LinkButton label="上一页" click="setPager(curPage - 1);" />  
  62.         <mx:LinkButton label="下一页" click="setPager(curPage + 1);" />  
  63.         <mx:LinkButton label="末页" click="setPager(totalPage - 1);" />  
  64.         <mx:NumericStepper id="inputpage" stepSize="1" minimum="0" maximum="0" />  
  65.         <mx:LinkButton label="跳转" click="setPager(inputpage.value - 1);" />  
  66.     </mx:HBox>  
  67. </mx:VBox> 

涉及控件包括:<mx:DataGrid>、<mx:HBox>、<mx:LinkButton>、<mx:NumericStepper>等。