亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Flex分頁控件

2019-11-17 03:52:33
字體:
來源:轉載
供稿:網友
提到分頁大家應該都很熟悉了,幾乎所有的應用中都會用到。因而完成一個分頁組件在不同的應用中進行復用是必須的,剛寫完了一個flex分頁的組件,拿來分享一下。如果有什么建議、問題歡迎大家提出。希望可以為flex的開發者們提供一個可靠的分頁組件。

                                                                                                    

package utils.page

{

    import Flash.events.MouseEvent;

    

    import mx.controls.Button;

    import mx.controls.Label;

    

    //分頁組件類

    //作者:孫鏡濤

    //日期:2010-01-12

    //描述:本類主要負責對分頁相關的按鈕以及信息顯示的標簽進行管理;對數據顯示內容進行控制

    public class PageComponent

    {

       //首頁按鈕

       PRivate var firstButton:Button;

       //下一頁按鈕

       private var nextButton:Button;

       //前一頁按鈕

       private var previousButton:Button;

       //最后頁按鈕

       private var lastButton:Button;

       //當前頁信息顯示

       private var curPageInfoLbl:Label;

       //所有頁信息顯示

       private var totalPageInfoLbl:Label;

       //當前頁改變時數據處理方法

       private var handleDataFun:Function;

       //分頁數據的處理類

       private var page:PageUtils;

       

       //first,next,previous,last:第一頁,下一頁,上一頁,最后頁的button

       //curPageInfoLbl,totalPageInfoLbl:當前頁,所有頁信息顯示的label

       //handleDataFun:分頁的頁碼改變后數據的處理函數,該函數符合的簽名為:(data:Array):void

       //exeFun:查詢數據的sql,該函數的簽名為:(sql:String):Array

       //pageNum:每頁顯示數據條數

       public function 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

       public function initSql(sql:String):void

       {

           this.page.initSqlAndInitDataIfNecessary(sql);        

           setButtonStatus();

           setLabelInfo();

           this.handleDataFun(page.getPageData());

       }



       //分頁按鈕被點擊時的處理邏輯為:

       //1.設置當前數據的頁數

       //2.設置分頁控件按鈕的狀態

       //3.設置分頁控件信息顯示label的內容

       //4.查詢該頁數據并執行數據處理函數

       

       //點擊第一頁時觸發的事件

       public function firstButtonClicked(event:MouseEvent):void

       {

           page.setCurrentPage(1);

           setButtonStatus();

           setLabelInfo();

           this.handleDataFun(page.getPageData());

       }

       

       //點擊下一頁時觸發的事件

       public function nextButtonClicked(event:MouseEvent):void

       {

           if(page.getCurrentPage()<page.getPageCount())

           {

              page.setCurrentPage(page.getCurrentPage()+1);

           }

           setButtonStatus();

           setLabelInfo();

           this.handleDataFun(page.getPageData());

       }

       

       //點擊上一頁時觸發的事件

       public function previousButtonClicked(event:MouseEvent):void

       {

           if(page.getCurrentPage()>1)

           {

              page.setCurrentPage(page.getCurrentPage()-1);

           }

           setButtonStatus();

           setLabelInfo();

           this.handleDataFun(page.getPageData());

       }

       

       //點擊最后頁時觸發的事件

       public function lastButtonClicked(event:MouseEvent):void

       {

           page.setCurrentPage(page.getPageCount());

           setButtonStatus();

           setLabelInfo();

           this.handleDataFun(page.getPageData());

       }

       

       //設置所有分頁按鈕的狀態為不可用

       private function 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位于最后也那么上一頁和第一頁的按鈕可用

       private function setButtonStatus():void

       {

           setAllButtonStatusDisabled();

           if(page.getTotalCount()>0&&page.getPageCount()>1)

           {

              if(page.getCurrentPage()==1)

              {

                  this.nextButton.enabled=true;

                  this.lastButton.enabled=true;

              }

              else if(page.getCurrentPage()<page.getPageCount()&&page.getCurrentPage()>1)

              {

                  this.nextButton.enabled=true;

                  this.firstButton.enabled=true;

                  this.previousButton.enabled=true;

                  this.lastButton.enabled=true;

              }

              else if(page.getCurrentPage()==page.getPageCount())

              {

                  this.firstButton.enabled=true;

                  this.previousButton.enabled=true;

              }             

           }

       }   

       

       //設置查詢結果分頁信息的label內容

       private function setLabelInfo():void

       {

           this.totalPageInfoLbl.text="共"+page.getPageCount()+"頁";

           this.curPageInfoLbl.text="當前第"+page.getCurrentPage()+"頁";

       }

       

    }

}







package utils.page

{

    import entity.ConsumptionRecord;

    

    //分頁數據組件類

    //作者:孫鏡濤

    //日期:2010-01-12

    //描述:本類主要負責對分頁數據的狀態進行控制,以及進行查詢數據

    public class PageUtils

    {

       //查詢數據的函數

       private var exeFun:Function;

       

       //分頁查詢的sql

       private var sql:String;

       //每頁顯示的記錄條數

       private var pageNumber:int=0;

       //當前查詢的記錄總數

       private var totalCount:int=0;

       //當前所處的頁數

       private var currentPage:int=0;

       //當前查詢的記錄總頁數

       private var totalPage:int=0;

       

       public function getPageCount():int

       {

           return this.totalPage;

       }

       

       public function getTotalCount():int

       {

           return this.totalCount;

       }

       

       public function getCurrentPage():int

       {

           return this.currentPage;

       }

       

       public function setCurrentPage(pageNum:int):void

       {

           this.currentPage=pageNum;

       }

       

       //構造函數, exeFun為查詢數據的函數,簽名需要符合:(sql:String):Array

       //         pageNum為每頁顯示記錄數,默認為10

       public function PageUtils(exeFun:Function,pageNum:int=10)

       {

           this.exeFun=exeFun;

           this.pageNumber=pageNum;

       }

       

       //初始化查詢sql,如果必要那么進行分頁數據的初始化

       //具體步驟為:

       //         1.如果本次查詢和上次查詢的sql不一樣,那么進行分頁數據初始化

       //         2.構造查詢記錄總數的sql

       //         3.根據查詢記錄總數的結果初始化本類的相關變量,如果沒有返回結果那么使用默認值:0

       public function 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;

              }   

           }

       }

       

       //獲取分頁數據的方法

       public function getPageData():Array

       {

           var tempSql:String=this.sql+getLimitOffsetSuffix(this.pageNumber,(this.currentPage-1)*this.pageNumber);

           return exeFun(tempSql);            

       }

       

       //為查詢sql增加分頁條件

       private function getLimitOffsetSuffix(limit:int,offset:int):String

       {

           return " LIMIT "+limit+" OFFSET "+offset;

       }



    }

}







使用該代碼你需要做什么:

           //處理分頁數據的方法

           private function bindDataToGrid(data:Array):void

           {

              //將數據綁定到DataGrid上

              dataGrid.dataProvider=data;

           }

           //執行數據查詢的方法

            public static function execute(sql:String):Array

           {      

               sqlStatement.text=sql;

               sqlStatement.execute();

               return sqlStatement.getResult().data;

           }

           //查詢條件改變時執行的方法

           private function searchConditionChanged():void

           {

//初始化分頁組件

var pageComponent:PageComponent=new

PageComponent(firstBtn,nextBtn,previousBtn,lastBtn,lblCurrentPage,lblTotalPage,bindDataToGrid,execute,20);       

var sql:String=”select name id from users”;

//初始化查詢sql

              pageComponent.initSql(sql);            

           }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久免费| 国产精品九九久久久久久久| 国产在线不卡精品| 欧美在线国产精品| 不卡av在线网站| 高潮白浆女日韩av免费看| 精品久久久久久| 色综合伊人色综合网站| 欧美情侣性视频| 亚洲伊人成综合成人网| 日韩在线视频免费观看| 成人免费福利在线| 国产欧美一区二区三区在线看| 日韩精品高清在线| 国产激情久久久| 国产精品a久久久久久| 日韩不卡在线观看| 精品国内产的精品视频在线观看| 亚洲久久久久久久久久| 九九热视频这里只有精品| 亚洲电影免费观看高清完整版在线| 久久久99久久精品女同性| 成人女保姆的销魂服务| 国产精品偷伦免费视频观看的| 欧美国产亚洲精品久久久8v| 亚洲激情第一页| 亚洲第一av在线| 在线a欧美视频| 欧美日韩成人在线观看| 久久久久久久电影一区| 欧美极品欧美精品欧美视频| 91国产精品视频在线| 日韩av一区二区在线| 欧美激情精品久久久久久蜜臀| 欧美精品一本久久男人的天堂| 欧美老女人www| 91免费精品国偷自产在线| 国产综合在线看| 国产午夜精品美女视频明星a级| 九九热99久久久国产盗摄| 亚洲激情视频在线观看| 57pao国产成人免费| 亚洲天堂网站在线观看视频| 日韩成人中文字幕| 日韩av在线免播放器| 在线免费观看羞羞视频一区二区| 亚洲第一区在线观看| 青青草原成人在线视频| 91免费精品视频| 日韩在线播放视频| 亚洲欧美日韩视频一区| 国产精品av网站| 国产精品日韩欧美综合| 欧美国产日韩一区二区三区| 91成人免费观看网站| 色先锋资源久久综合5566| 亚洲综合自拍一区| 久久久噜噜噜久久| 欧美性视频在线| 欧美激情一区二区久久久| 国产欧美精品日韩精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲日本中文字幕免费在线不卡| 国产精品亚洲аv天堂网| 欧美精品激情在线观看| 色综合天天狠天天透天天伊人| 亚洲精品白浆高清久久久久久| 国产精品久久久久秋霞鲁丝| 69久久夜色精品国产7777| 国产精品第10页| 欧美视频在线观看 亚洲欧| 宅男66日本亚洲欧美视频| 中文字幕免费精品一区| 成人国产在线视频| 91欧美精品成人综合在线观看| 欧美二区乱c黑人| 欧美一级在线播放| 亚洲精品一区二区久| 日韩精品视频观看| 欧美日韩激情视频| 视频直播国产精品| 久久99精品久久久久久噜噜| 日韩在线观看免费网站| 精品中文字幕在线2019| 欧美超级乱淫片喷水| 国产精品久久久久久久久久ktv| 美女999久久久精品视频| 亚洲iv一区二区三区| 午夜精品一区二区三区视频免费看| 97超碰色婷婷| 国产精品一区二区3区| 日本午夜在线亚洲.国产| 亚洲精品98久久久久久中文字幕| 欧美精品久久久久久久久| 色先锋资源久久综合5566| 亚洲区免费影片| 久久精彩免费视频| 色综合久久中文字幕综合网小说| 国产在线视频一区| 久久九九热免费视频| 美女性感视频久久久| 欧美激情综合亚洲一二区| 欲色天天网综合久久| 久久最新资源网| 欧美电影免费观看高清完整| 久久久亚洲福利精品午夜| 国产欧美va欧美va香蕉在线| 亚洲性视频网址| 九九热精品视频国产| 国产精品福利在线| 亚洲精品电影在线观看| 亚洲大胆人体在线| 日韩**中文字幕毛片| 热久久这里只有精品| 国产在线高清精品| 久久影视三级福利片| 午夜精品福利视频| 久久999免费视频| 国产一区二区三区在线视频| 人人澡人人澡人人看欧美| 亚洲自拍在线观看| 国产精品久久久久久五月尺| 国产精品高潮呻吟久久av黑人| 日日噜噜噜夜夜爽亚洲精品| 尤物tv国产一区| 九九精品在线观看| 国产成人精彩在线视频九色| 91sao在线观看国产| 欧美极品在线播放| 欧美精品成人在线| 乱亲女秽乱长久久久| 国产午夜一区二区| 2018中文字幕一区二区三区| 久久精品小视频| 亚洲精品网站在线播放gif| 在线视频亚洲欧美| 日韩欧美中文免费| 中文字幕不卡av| 91精品久久久久| 欧美小视频在线观看| 亚洲黄色在线观看| 88国产精品欧美一区二区三区| 欧美高清一级大片| 狠狠综合久久av一区二区小说| 国产精品一区二区久久久| 免费97视频在线精品国自产拍| 日本久久久久亚洲中字幕| 激情av一区二区| 国产不卡精品视男人的天堂| 夜夜躁日日躁狠狠久久88av| 免费不卡在线观看av| 成人观看高清在线观看免费| 5566日本婷婷色中文字幕97| 55夜色66夜色国产精品视频| 国产三级精品网站| 亚洲天堂av高清| 久久久精品欧美| 久久久人成影片一区二区三区| 国产九九精品视频| 国产精品久久久久久久久男| 久久成人一区二区| 欧美成人免费视频| 精品久久久久久久久久久久| 国产精品久久久久秋霞鲁丝|