自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

解析如何使用Flex開發(fā)DataGrid分頁控件

開發(fā) 后端
本文向大家簡單介紹一下使用Flex開發(fā)DataGrid分頁控件,開發(fā)Flex的DataGrid分頁控件分頁(paging)控件,支持客戶端、服務端兩種分頁形式。

在學習Flex的過程中你可能會遇到使用Flex開發(fā)DataGrid分頁控件方面的問題,這里和大家分享一下,開發(fā)Flex的DataGrid分頁控件分頁(paging)控件,支持客戶端、服務端兩種分頁形式。

使用Flex開發(fā)DataGrid分頁控件

下面教程開發(fā)Flex的DataGrid分頁控件分頁(paging)控件,支持客戶端、服務端兩種分頁形式;這里著重分享一下思路,雖然是用Flex做的,但只要掌握了思路,用別的編程語言也能達到同樣的效果。

DataGrid分頁控件分頁效果圖

 

設計思路:

1,客戶端、服務端

 ?。?)客戶端分頁:將數(shù)據(jù)一次性取到客戶端,客戶要看哪一頁的數(shù)據(jù),顯示哪一頁的數(shù)據(jù)。
 ?。?)服務端分頁:客戶要看哪一頁的數(shù)據(jù),向服務端請求哪一頁的數(shù)據(jù),客戶端將請求到的數(shù)據(jù)顯示給用戶(可以在客戶端、服務端分別做緩存,加快數(shù)據(jù)的讀取),由于Flex本身不具有數(shù)據(jù)庫訪問能力,可以考慮通過WebServices向服務器傳遞數(shù)據(jù),數(shù)據(jù)的表示形式可以是XML、JSON(本文采用XML的形式)

2,分頁表示層的設計

 ?。?)頁碼條中4個按鈕;這四個按鈕分別為轉(zhuǎn)到第一頁,前一頁,后一頁,最后一頁;當這四個按鈕中的任意一點被點擊時,頁碼要重繪,當前頁碼變化;且還要考慮當頁碼中有第一頁時,前兩個按鈕要隱藏起來;當頁碼中有最后一頁時,后兩個按鈕要隱藏起來。
  (2)頁碼條中頁碼;當點擊頁碼條中的頁碼時,DataGrid分頁控件中更新顯示數(shù)據(jù)即可,當前頁碼變化。
 ?。?)顯示總頁數(shù),總記錄數(shù);
 ?。?)每頁記錄數(shù),讓用戶通過下拉框選擇;當用戶選擇新的每頁顯示記錄數(shù)時,頁碼要重繪,總頁數(shù)發(fā)生變化,當前頁碼變化。
 ?。?)頁碼輸入框,讓用戶輸入任意頁碼(要檢查輸入數(shù)據(jù)是否合法),DataGrid分頁控件顯示頁碼中的數(shù)據(jù),頁碼要重繪,總頁數(shù)變化。
 ?。?)查看所有;分頁中的特殊情況,將每頁記數(shù)置為記錄總數(shù)即可達到要求!頁碼要重繪,總頁數(shù)發(fā)生變化,當前頁碼變化

 

下面貼出代碼實現(xiàn):

代碼說明

(1)分頁功能條,做一個自定義組件,布局如下:

Code[http://www.xueit.com]
 

  1. 1<mx:HBoxpaddingTopmx:HBoxpaddingTop="8"> 
  2. 2<mx:Buttonidmx:Buttonid="firstNavBtn"icon="{firstIcon}"width="10"height="10"click="navigateButtonClick('firstPage');"/> 
  3. 3<mx:Buttonidmx:Buttonid="preNavBtn"icon="{preIcon}"width="7"height="10"click="navigateButtonClick('prePage');"/> 
  4. 4</mx:HBox> 
  5. 5<mx:LinkBaridmx:LinkBarid="pageNav"itemClick="navigatePage(event)"dataProvider="{nav}"/> 
  6. 6<mx:HBoxpaddingTopmx:HBoxpaddingTop="8"> 
  7. 7<mx:Buttonidmx:Buttonid="nextNavBtn"icon="{nextIcon}"width="7"height="10"click="navigateButtonClick('nextPage');"/> 
  8. 8<mx:Buttonidmx:Buttonid="lastNavBtn"icon="{lastIcon}"width="10"height="10"click="navigateButtonClick('lastPage');"/> 
  9. 9</mx:HBox> 
  10. 10<mx:VRuleheightmx:VRuleheight="25"/> 
  11. 11<mx:LabelpaddingTopmx:LabelpaddingTop="3"id="totalPagesLabel"text=""/> 
  12. 12<mx:LabelpaddingTopmx:LabelpaddingTop="3"id="totalRecordLabel"text=""/> 
  13. 13<mx:LabelpaddingTopmx:LabelpaddingTop="3"text="每頁記錄:"/> 
  14. 14<mx:ComboBoxidmx:ComboBoxid="pageSizeComobox"cornerRadius="0"paddingLeft="0"fontWeight="normal"  
  15. width="50"arrowButtonWidth="10"change="pageSizeSelectChange()"/> 
  16. 15<mx:LabelpaddingTopmx:LabelpaddingTop="3"text="頁碼:"/> 
  17. 16<mx:TextInputidmx:TextInputid="pageNumber"width="40"keyDown="pageIndexInsertChange(event);"/> 
  18. 17<mx:LinkButtonidmx:LinkButtonid="viewAllLinkBtn"label="查看所有"click="viewAll();"/> 

 (2)頁碼條繪制方法,傳參數(shù)為頁碼中的第一個頁碼

Code[http://www.xueit.com]
 

  1. 1/**  
  2. 2*構建頁碼條  
  3. 3*pages:總頁數(shù)  
  4. 4*pageIndex:當前頁(注意,從0開始)  
  5. 5*  
  6. 6*/  
  7. 7privatefunctioncreateNavBar(pageIndex:uint=0):void{  
  8. 8nav.removeAll();  
  9. 9//向前圖標操作,first,Pre  
  10. 10if(pageIndex>1){  
  11. 11firstPage=0;  
  12. 12firstNavBtn.visible=true;  
  13. 13//  
  14. 14varintLFive:int=pageIndex-navSize;//calculatestartoflast5;  
  15. 15//  
  16. 16prePage=intLFive;  
  17. 17preNavBtn.visible=true;  
  18. 18}  
  19. 19else{  
  20. 20firstNavBtn.visible=false;  
  21. 21preNavBtn.visible=false;  
  22. 22}  
  23. 23//頁碼條  
  24. 24for(varx:uint=0;x<navSize;x){  
  25. 25varpg:uint=xpageIndex;26nav.addItem({label:pg1,data:pg});  
  26. 27//28varpgg:uint=pg1;  
  27. 29if(pgg>=totalPages){//搜索到最后一個頁碼,停止添加到navbar  
  28. 30x=navSize;  
  29. 31}32}33//計算最后一組頁碼條中第一個頁碼的頁碼編號  
  30. 34varlastpage:Number=0;  
  31. 35for(vary:uint=navSize;y<=totalPages-1;y=ynavSize){
  32. //letscalculatethelastpagebutton  
  33. 36if(y5>navSize){  
  34. 37lastpage=y;  
  35. 38}  
  36. 39}  
  37. 40//向后圖標  
  38. 41if(pg<totalPages-1){  
  39. 42nextPage=pg1;  
  40. 43nextNavBtn.visible=true;  
  41. 44lastPage=lastpage;  
  42. 45lastNavBtn.visible=true;  
  43. 46}  
  44. 47else{  
  45. 48nextNavBtn.visible=false;  
  46. 49lastNavBtn.visible=false;  
  47. 50}  
  48. 51}  

 3、分頁觸發(fā)的方法,組件中有一個屬性為pagingFunction,為向服務端請求數(shù)據(jù)的函數(shù);當該函數(shù)為空時,調(diào)用客戶端分頁;反之調(diào)用該方法進行服務端分頁。

Code[http://www.xueit.com]
 

  1. 1/**  
  2. 2*更新數(shù)據(jù)源,更新表格顯示數(shù)據(jù)  
  3. 3*/  
  4. 4privatefunctionrefreshDataProvider(pageIndex:uint,isCreateNavBar:Boolean=true,
  5. pageSize:uint=0,resultReturn:Boolean=false):void{  
  6. 5//分頁函數(shù)  
  7. 6if(DataGrid分頁控件==null)return;  
  8. 7currentPageIndex=pageIndex;  
  9. 8if(pageSize==0){  
  10. 9pageSize=this.pageSize;10}else{  
  11. 11this.pageSize=pageSize;  
  12. 12if(!resultReturn)totalPages=Math.ceil(orgData.length/pageSize);  
  13. 13}  
  14. 14if(!resultReturn){  
  15. 15if(this.pagingFunction!=null){  
  16. 16pagingFunction(pageIndex,pageSize);  
  17. 17this.isCreateNavBar=isCreateNavBar;  
  18. 18}  
  19. 19else{  
  20. 20viewData=newArrayCollection(orgData.source.slice((pageIndex*pageSize),(pageIndex*pageSize)pageSize));  
  21. 21DataGrid分頁控件.dataProvider=viewData;  
  22. 22pageNumber.text=(pageIndex1).toString();  
  23. 23  
  24. 24totalRecordLabel.text='總記錄數(shù):'orgData.length.toString();  
  25. 25}  
  26. 26}  
  27. 27else{  
  28. 28DataGrid分頁控件.dataProvider=orgData;  
  29. 29totalPages=Math.ceil(totalRecord/pageSize);  
  30. 30pageNumber.text=(pageIndex1).toString();  
  31. 31totalRecordLabel.text='總記錄數(shù):'totalRecord.toString()  
  32. 32}  
  33. 33totalPagesLabel.text='總頁數(shù):'totalPages;  
  34. 34if(isCreateNavBar)createNavBar(pageIndex);  
  35. 35} 

代碼下載
/Files/badwps/FlexPagingBar.rar

【編輯推薦】

  1. 學習筆記 在Flex中如何使用CSS文件
  2. FlexBuilder4十大新特性閃亮登場
  3. Flex框架中Cairngorm和Mate的優(yōu)點大比拼
  4. FlexBuilder3.0與Eclipse3.4的完美結合
  5. 解析Flex應用開發(fā)步驟 新特性和技術框架 

 

責任編輯:佚名 來源: cnblogs.com
相關推薦

2010-07-28 09:29:36

Flex DataGr

2010-08-11 16:10:27

Flex DataGr

2009-08-21 15:27:11

C# DataGrid

2009-08-07 09:20:26

DataPager數(shù)據(jù)

2010-08-11 16:30:49

Flex DataGr

2010-08-11 13:28:46

Flex行為

2010-08-03 14:24:37

Flex與java集成

2010-07-30 16:17:18

Flex開發(fā)

2010-08-06 15:11:44

Flex界面控件

2010-08-12 13:59:37

FlexList控件

2009-08-11 14:45:41

C# DataGrid

2010-07-27 13:53:15

Flex ComboB

2010-08-05 13:14:16

Flex布局

2010-08-09 15:52:28

2010-07-30 13:52:17

Flex組件

2010-07-30 09:56:02

Flex控件

2010-08-04 15:12:54

Flex開發(fā)

2009-08-25 15:30:55

DataGrid We

2010-08-11 15:11:52

Flex組合框

2010-08-11 16:03:02

Flex DataGr
點贊
收藏

51CTO技術棧公眾號