Flex分页控件
来源:互联网 发布:勃朗宁m1910淘宝 编辑:程序博客网 时间:2024/05/01 07:27
提到分页大家应该都很熟悉了,几乎所有的应用中都会用到。因而完成一个分页组件在不同的应用中进行复用是必须的,刚写完了一个flex分页的组件,拿来分享一下。如果有什么建议、问题欢迎大家提出。希望可以为flex的开发者们提供一个可靠的分页组件。
package utils.page
{
import flash.events.MouseEvent;
import mx.controls.Button;
import mx.controls.Label;
//分页组件类
//描述:本类主要负责对分页相关的按钮以及信息显示的标签进行管理;对数据显示内容进行控制
publicclass PageComponent
{
//首页按钮
privatevar firstButton:Button;
//下一页按钮
privatevar nextButton:Button;
//前一页按钮
privatevar previousButton:Button;
//最后页按钮
privatevar lastButton:Button;
//当前页信息显示
privatevar curPageInfoLbl:Label;
//所有页信息显示
privatevar totalPageInfoLbl:Label;
//当前页改变时数据处理方法
privatevar handleDataFun:Function;
//分页数据的处理类
privatevar page:PageUtils;
//first,next,previous,last:第一页,下一页,上一页,最后页的button
//curPageInfoLbl,totalPageInfoLbl:当前页,所有页信息显示的label
//handleDataFun:分页的页码改变后数据的处理函数,该函数符合的签名为:(data:Array):void
//exeFun:查询数据的sql,该函数的签名为:(sql:String):Array
//pageNum:每页显示数据条数
publicfunction PageComponent(first:Button,next:Button,previous:Button,last:Button,curPageInfoLbl:Label,
totalPageInfoLbl:Label,handleDataFun:Function,exeFun:Function,pageNum:int)
{
//分页按钮初始化
this.firstButton=first;
this.nextButton=next;
this.previousButton=previous;
this.lastButton=last;
//分页信息显示控件初始化
this.curPageInfoLbl=curPageInfoLbl;
this.totalPageInfoLbl=totalPageInfoLbl;
//页面改变后数据处理函数
this.handleDataFun=handleDataFun;
//分页数据类初始化
this.page=new PageUtils(exeFun,pageNum);
//为分页按钮增加相应的事件处理函数
this.firstButton.addEventListener(MouseEvent.CLICK,firstButtonClicked);
this.nextButton.addEventListener(MouseEvent.CLICK,nextButtonClicked);
this.previousButton.addEventListener(MouseEvent.CLICK,previousButtonClicked);
this.lastButton.addEventListener(MouseEvent.CLICK,lastButtonClicked);
}
//需要分页查询的的sql
publicfunction initSql(sql:String):void
{
this.page.initSqlAndInitDataIfNecessary(sql);
setButtonStatus();
setLabelInfo();
this.handleDataFun(page.getPageData());
}
//分页按钮被点击时的处理逻辑为:
//1.设置当前数据的页数
//2.设置分页控件按钮的状态
//3.设置分页控件信息显示label的内容
//4.查询该页数据并执行数据处理函数
//点击第一页时触发的事件
publicfunction firstButtonClicked(event:MouseEvent):void
{
page.setCurrentPage(1);
setButtonStatus();
setLabelInfo();
this.handleDataFun(page.getPageData());
}
//点击下一页时触发的事件
publicfunction nextButtonClicked(event:MouseEvent):void
{
if(page.getCurrentPage()<page.getPageCount())
{
page.setCurrentPage(page.getCurrentPage()+1);
}
setButtonStatus();
setLabelInfo();
this.handleDataFun(page.getPageData());
}
//点击上一页时触发的事件
publicfunction previousButtonClicked(event:MouseEvent):void
{
if(page.getCurrentPage()>1)
{
page.setCurrentPage(page.getCurrentPage()-1);
}
setButtonStatus();
setLabelInfo();
this.handleDataFun(page.getPageData());
}
//点击最后页时触发的事件
publicfunction lastButtonClicked(event:MouseEvent):void
{
page.setCurrentPage(page.getPageCount());
setButtonStatus();
setLabelInfo();
this.handleDataFun(page.getPageData());
}
//设置所有分页按钮的状态为不可用
privatefunction setAllButtonStatusDisabled():void
{
this.firstButton.enabled=false;
this.previousButton.enabled=false;
this.nextButton.enabled=false;
this.lastButton.enabled=false;
}
//设置分页按钮的状态
//步骤为:
// 1.首先设置所有分页按钮的状态为不可用
// 2.判断是否需要启用某些分页按钮(仅当查询有数据并且数据页数大于一的时候才有必要)
// 2.1如果需要启用某些按钮分为三种情况:
// 2.1.1位于第一页那么下一页和最后页的按钮可用
// 2.1.2位于中间页那么所有按钮可用
// 2.1.3位于最后也那么上一页和第一页的按钮可用
privatefunction setButtonStatus():void
{
setAllButtonStatusDisabled();
if(page.getTotalCount()>0&&page.getPageCount()>1)
{
if(page.getCurrentPage()==1)
{
this.nextButton.enabled=true;
this.lastButton.enabled=true;
}
elseif(page.getCurrentPage()<page.getPageCount()&&page.getCurrentPage()>1)
{
this.nextButton.enabled=true;
this.firstButton.enabled=true;
this.previousButton.enabled=true;
this.lastButton.enabled=true;
}
elseif(page.getCurrentPage()==page.getPageCount())
{
this.firstButton.enabled=true;
this.previousButton.enabled=true;
}
}
}
//设置查询结果分页信息的label内容
privatefunction setLabelInfo():void
{
this.totalPageInfoLbl.text="共"+page.getPageCount()+"页";
this.curPageInfoLbl.text="当前第"+page.getCurrentPage()+"页";
}
}
}
package utils.page
{
import entity.ConsumptionRecord;
//分页数据组件类
//描述:本类主要负责对分页数据的状态进行控制,以及进行查询数据
publicclass PageUtils
{
//查询数据的函数
privatevar exeFun:Function;
//分页查询的sql
privatevar sql:String;
//每页显示的记录条数
privatevar pageNumber:int=0;
//当前查询的记录总数
privatevar totalCount:int=0;
//当前所处的页数
privatevar currentPage:int=0;
//当前查询的记录总页数
privatevar totalPage:int=0;
publicfunction getPageCount():int
{
returnthis.totalPage;
}
publicfunction getTotalCount():int
{
returnthis.totalCount;
}
publicfunction getCurrentPage():int
{
returnthis.currentPage;
}
publicfunction setCurrentPage(pageNum:int):void
{
this.currentPage=pageNum;
}
//构造函数, exeFun为查询数据的函数,签名需要符合:(sql:String):Array
// pageNum为每页显示记录数,默认为10
publicfunction PageUtils(exeFun:Function,pageNum:int=10)
{
this.exeFun=exeFun;
this.pageNumber=pageNum;
}
//初始化查询sql,如果必要那么进行分页数据的初始化
//具体步骤为:
// 1.如果本次查询和上次查询的sql不一样,那么进行分页数据初始化
// 2.构造查询记录总数的sql
// 3.根据查询记录总数的结果初始化本类的相关变量,如果没有返回结果那么使用默认值:0
publicfunction initSqlAndInitDataIfNecessary(sql:String):void
{
if(this.sql!=sql)
{
this.sql=sql;
var countSql:String="SELECT COUNT(*) COUNT_NUMBER "+sql.substring(sql.indexOf("FROM"));
var data:Array=exeFun(countSql);
if(data!=null)
{
//设置总条数
this.totalCount=data[0].COUNT_NUMBER;
//设置总页数
this.totalPage=this.totalCount%this.pageNumber==0?this.totalCount/this.pageNumber:this.totalCount/this.pageNumber+1;
//设置当前页
this.currentPage=1;
}
}
}
//获取分页数据的方法
publicfunction getPageData():Array
{
var tempSql:String=this.sql+getLimitOffsetSuffix(this.pageNumber,(this.currentPage-1)*this.pageNumber);
return exeFun(tempSql);
}
//为查询sql增加分页条件
privatefunction getLimitOffsetSuffix(limit:int,offset:int):String
{
return" LIMIT "+limit+" OFFSET "+offset;
}
}
}
- flex自定义分页控件
- flex 分页控件
- flex-分页控件
- flex-分页控件
- FLEX 分页控件
- FLEX 分页控件(转)
- Flex分页控件
- Flex分页控件
- flex分页控件的源码
- flex分页控件的使用
- flex as3 写的一个分页控件
- 自己做的flex分页控件
- FLEX2中DataGrid控件的分页 (Flex 自定义DataGrid控件)
- flex分页-
- flex分页
- FLEX 分页
- flex 分页
- Flex 4 List Data Paging(Flex 4 List控件分页功能的实现)
- 理解软件开发生命周期模型__2006
- Flex中Css参考示例
- Android上你所不知道的8款游戏引擎
- 软考、职称、职称资格及三者之间的关系
- Fedora 14 完美安装Vmware tools 记录 : )
- Flex分页控件
- window下使用位图作为opengl纹理
- 一个笑话
- Flex组件样式参考
- 在用户态实现linux内核链表机制
- java的艰难怎么度过?
- ExtJS中子页面调用父页面元素有感
- AS使用Random函数创建随机数
- usb debugging的实现机制