flex datagrid 做个分页

首先在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>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值