flex datagrid 做个分页

来源:互联网 发布:网络热点视频门 编辑:程序博客网 时间:2024/05/21 14:51

首先在flex项目中新建一个as类:dgPaging.as

代码如下:

package myComponents

{
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
import mx.controls.Label;
import mx.controls.NumericStepper;


public class dgPaging
{
/**
* 初始化切换部分的一些变量
* 调用setPaper()
*/
public var _pageCount:int = 20;//表示每页记录的条数,默认10条,可以由用户自行定义
public var _curPage:int;//当前的页码
public var _totalPage:int;//一共的页数
public var _totalCount:int;//一共的记录条数 
public var pageDateTempArr:ArrayCollection;
/**
* 函数名:initdata
* 功能:实现分页中的初始显示第一页
* 参数: value:ArrayCollection 作为dg全部信息的数组;
* inputpage:NumericStepper NumericStepper 控件;
* pageDetail:Label label空间;
* dg:DataGrid DataGrid控件
* 返回值:空
* 创建者:刘振
* 创建时间:2012-11-23
*
**/
public function initdata(value:ArrayCollection,inputpage:NumericStepper,pageDetail:Label,dg:DataGrid):void
{
pageDateTempArr = new ArrayCollection;//移出当前页面中所有数据记录 
if(value.length>0 && null != value)
{
_totalCount = value.length;
_totalPage = (_totalCount + _pageCount - 1) / _pageCount;
setPager(0,pageDateTempArr,value,pageDetail,dg);
inputpage.minimum = 1;
inputpage.maximum = _totalPage;
}
else
{
dg.dataProvider = pageDateTempArr;
_totalCount = 0;
_totalPage = 0;
_curPage = 0;
inputpage.minimum = 0;
inputpage.maximum = 0;
pageDetail.text = "第0页/共0页   共0条纪录";
}
}
/**
* 函数名:setPager
* 功能:实现分页
* 参数: value:int 设定的显示的页码;
* tempArr:ArrayCollection 一页中显示的信息的数据源数组;
* dataArr:ArrayCollection 作为dg全部信息的数组;
* pageDetail:Label label空间;
* dg:DataGrid DataGrid控件
* 返回值:空
* 创建者:刘振
* 创建时间:2012-11-23
*
**/
public function setPager(value:int,tempArr:ArrayCollection,dataArr:ArrayCollection,pageDetail:Label,dg:DataGrid):void
{
if(value < 0 || value >= _totalPage)
return;
_curPage = value;
var curNum:int = value*_pageCount;//计算出要跳转到的页面种的第一条记录在所有的记录种是第几条记录
tempArr.removeAll();//移出变量中的数据,以便插入新数据,页面中显示的是这个变量中的数据
for(var i:int = 0;curNum < dataArr.length && i < _pageCount;i++,curNum++)
//循环的次数既要小于所有的记录数,也要小于每个页面能显示的记录数;并且curNum变量中的值也要增加
{
tempArr.addItem(dataArr.getItemAt(curNum));//依次抽取记录 

dg.dataProvider = tempArr; 
var temp:int = _curPage+1;//页码中第一张页面是0,也就是说实际显示的页码是+1后的值
pageDetail.text = "第"+temp+"页/共"+_totalPage+"页   共条"+_totalCount+"记录";
}
}

}

在module中调用:

import myComponents.dgPaging;//引入分页类
private var divdPage:dgPaging = new dgPaging;

然后再给dg赋值的函数中调用initdata方法

divdPage.initdata(inspectArr,inputpage,pageDetail,log_dg);

//inspectArr为dg的全部信息数组Arraycollection,

//inputpage 为textinput控件的id,

//pageDetail为显示的页码数的label控件

//log_dg为dg控件

在控件中的调用更改页码:

<mx:HBox  includeIn="baobiaoState" width="100%" horizontalAlign="left" verticalAlign="middle" height="30" x="0" y="{log_dg.height}"  > 
<mx:Spacer width="287" height="1"></mx:Spacer>
<mx:Label text="第0页/共0页" id="pageDetail"/>
<mx:LinkButton label="首页" click="divdPage.setPager(0,divdPage.pageDateTempArr,inspectArr,pageDetail,log_dg)"/>
<mx:LinkButton label="上一页" click="divdPage.setPager(divdPage._curPage-1,divdPage.pageDateTempArr,inspectArr,pageDetail,log_dg)"/>
<mx:LinkButton label="下一页" click="divdPage.setPager(divdPage._curPage+1,divdPage.pageDateTempArr,inspectArr,pageDetail,log_dg)"/>
<mx:LinkButton label="末页" click="divdPage.setPager(divdPage._totalPage-1,divdPage.pageDateTempArr,inspectArr,pageDetail,log_dg)"/>
<mx:NumericStepper id="inputpage" stepSize="1" minimum="0" maximum="0" cornerRadius="0" />
<mx:LinkButton label="跳转" click="divdPage.setPager(inputpage.value-1,divdPage.pageDateTempArr,inspectArr,pageDetail,log_dg)"/>
</mx:HBox>

原创粉丝点击