日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
解析如何使用Flex開(kāi)發(fā)DataGrid分頁(yè)控件

在學(xué)習(xí)Flex的過(guò)程中你可能會(huì)遇到使用Flex開(kāi)發(fā)DataGrid分頁(yè)控件方面的問(wèn)題,這里和大家分享一下,開(kāi)發(fā)Flex的DataGrid分頁(yè)控件分頁(yè)(paging)控件,支持客戶端、服務(wù)端兩種分頁(yè)形式。

使用Flex開(kāi)發(fā)DataGrid分頁(yè)控件

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

DataGrid分頁(yè)控件分頁(yè)效果圖

設(shè)計(jì)思路:

1,客戶端、服務(wù)端

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

2,分頁(yè)表示層的設(shè)計(jì)

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

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

代碼說(shuō)明

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

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

 
 
 
 
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. width="50"arrowButtonWidth="10"change="pageSizeSelectChange()"/>
  16. 15
  17. 16
  18. 17

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

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

 
 
 
 
  1. 1/**
  2. 2*構(gòu)建頁(yè)碼條
  3. 3*pages:總頁(yè)數(shù)
  4. 4*pageIndex:當(dāng)前頁(yè)(注意,從0開(kāi)始)
  5. 5*
  6. 6*/
  7. 7privatefunctioncreateNavBar(pageIndex:uint=0):void{
  8. 8nav.removeAll();
  9. 9//向前圖標(biāo)操作,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//頁(yè)碼條
  24. 24for(varx:uint=0;x
  25. 25varpg:uint=xpageIndex;26nav.addItem({label:pg1,data:pg});
  26. 27//28varpgg:uint=pg1;
  27. 29if(pgg>=totalPages){//搜索到最后一個(gè)頁(yè)碼,停止添加到navbar
  28. 30x=navSize;
  29. 31}32}33//計(jì)算最后一組頁(yè)碼條中第一個(gè)頁(yè)碼的頁(yè)碼編號(hào)
  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//向后圖標(biāo)
  38. 41if(pg
  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、分頁(yè)觸發(fā)的方法,組件中有一個(gè)屬性為pagingFunction,為向服務(wù)端請(qǐng)求數(shù)據(jù)的函數(shù);當(dāng)該函數(shù)為空時(shí),調(diào)用客戶端分頁(yè);反之調(diào)用該方法進(jìn)行服務(wù)端分頁(yè)。

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//分頁(yè)函數(shù)
  7. 6if(DataGrid分頁(yè)控件==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分頁(yè)控件.dataProvider=viewData;
  22. 22pageNumber.text=(pageIndex1).toString();
  23. 23
  24. 24totalRecordLabel.text='總記錄數(shù):'orgData.length.toString();
  25. 25}
  26. 26}
  27. 27else{
  28. 28DataGrid分頁(yè)控件.dataProvider=orgData;
  29. 29totalPages=Math.ceil(totalRecord/pageSize);
  30. 30pageNumber.text=(pageIndex1).toString();
  31. 31totalRecordLabel.text='總記錄數(shù):'totalRecord.toString()
  32. 32}
  33. 33totalPagesLabel.text='總頁(yè)數(shù):'totalPages;
  34. 34if(isCreateNavBar)createNavBar(pageIndex);
  35. 35}

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


網(wǎng)頁(yè)標(biāo)題:解析如何使用Flex開(kāi)發(fā)DataGrid分頁(yè)控件
分享URL:http://www.5511xx.com/article/ccdhihj.html