Datagrid没有自己的分页组件,只好自己做。本分页组件只接受外部传进的分页参数,生成页面分页信息。作为标签独立使用。
- <?xml version="1.0" encoding="utf-8"?>
- <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" creationComplete="init()" >
- <!-- 基于服务器端的分页组件 -->
- <mx:Script>
- <![CDATA[
- import mx.collections.ArrayCollection;
- import mx.events.FlexEvent;
- import mx.controls.Alert;
- private var totalCount:Number=0;//总记录数
- private var countPerPage:Number=1;//每页记录数
- [Bindable]
- private var curPage:Number=1;//当前
- [Bindable]
- private var totalPage:Number=1;//总页数
- private var jumpFun:Function;
- private var pageC:ArrayCollection=new ArrayCollection();
- //初始化
- private function init():void {
- firstPageBtn.enabled=false;
- prePageBtn.enabled=false;
- nextPageBtn.enabled=false;
- lastPageBtn.enabled=false;
- this.addEventListener(FlexEvent.DATA_CHANGE,dataUpdate);
- }
- private function dataUpdate(e:FlexEvent):void {
- update();
- }
- //执行更新
- private function update():void {
- this.totalCount=this.data.totalCount;
- this.countPerPage=this.data.countPerPage;
- this.curPage=this.data.curPage;
- this.totalPage=Math.ceil(totalCount/countPerPage);
- this.jumpFun=this.data.jumpFun;
- this.pageC.removeAll();
- for(var i=1;i<=totalPage;i++){
- var o:Object=new Object();
- o.num=i;
- this.pageC.addItem(o);
- }
- checkButton();
- }
- //根据总页数和当前页数,调整按钮的可用性
- private function checkButton():void{
- if(totalPage==1){
- firstPageBtn.enabled=false;
- prePageBtn.enabled=false;
- nextPageBtn.enabled=false;
- lastPageBtn.enabled=false;
- }else if(curPage==1){
- firstPageBtn.enabled=false;
- prePageBtn.enabled=false;
- nextPageBtn.enabled=true;
- lastPageBtn.enabled=true;
- }else if(curPage==totalPage){
- firstPageBtn.enabled=true;
- prePageBtn.enabled=true;
- nextPageBtn.enabled=false;
- lastPageBtn.enabled=false;
- }
- jumpPageBtn.selectedIndex=(curPage-1);
- }
- //执行页面跳转
- private function jumpToPage(pageNum:Number):void{
- //Alert.show("to page"+ pageNum);
- if(jumpFun){
- jumpFun(pageNum);
- }
- }
- private function selectChanged(event:Event):void{
- var num:Number=ComboBox(event.target).selectedItem.num;
- jumpToPage(num);
- }
- ]]>
- </mx:Script>
- <mx:Label text="{curPage}/{totalPage}页"/>
- <mx:Button id="firstPageBtn" label="首页" click="jumpToPage(1)"/>
- <mx:Button id="prePageBtn" label="上一页" click="jumpToPage(curPage-1)"/>
- <mx:Button id="nextPageBtn" label="下一页" click="jumpToPage(curPage+1)"/>
- <mx:Button id="lastPageBtn" label="末页" click="jumpToPage(totalPage)"/>
- <mx:Label text="跳转到"/>
- <mx:ComboBox id="jumpPageBtn" dataProvider="{pageC}" labelField="num" change="selectChanged(event)" maxWidth="100"/>
- </mx:HBox>
保存为com/company/component/controls/SPagination.MXML
调用方式如下:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:company="com.company.component.controls.*" creationComplete="init()" >
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- private function init():void {
- //update();
- var pageObject:Object=new Object();
- pageObject.totalCount=120;
- pageObject.countPerPage=20;
- pageObject.curPage=6;
- pageObject.jumpFun=jumpToPage;
- myPagination.data=pageObject;
- }
- private function jumpToPage(pageNum:Number):void{
- Alert.show("out to page"+ pageNum);
- //这里写上执行向服务器请求查询的代码
- }
- ]]>
- </mx:Script>
- <mx:VBox >
- <mx:DataGrid id="dataGrid"
- width="320"
- rowCount="8"
- verticalScrollPolicy="on"
- >
- <mx:columns>
- <mx:DataGridColumn dataField="type" />
- <mx:DataGridColumn dataField="time"
- headerText="time (ms)"
- />
- </mx:columns>
- </mx:DataGrid>
- <company:SPagination id="myPagination"/>
- </mx:VBox>
- </mx:Application>