Flex DataGrid组件分页方法详尽解读

开发 后端
本文向大家介绍一下Flex DataGrid组件的分页与排序,基本思路是,把全部数据一次性读到一个数据集中,然后,再与Flex DataGrid组件关联,分页的读取显示。

在学习Flex的过程中,你可能会遇到Flex DataGrid组件的用法问题,这里和大家分享一下Flex DataGrid组件的分页,在很多语言中,分页技术都是很常见的。基本思路是先从数据库中读取一页的数据,在Flex DataGrid组件中显示出来,然后再读取,再显示。

Flex DataGrid组件的分页与排序

当Flex DataGrid组件中的数据显示很多行的时候,使用者需要不停地下拉滚动条。这对于用户的体验极为不便,分页显示数据的方式就可以很好地解决这个问题。在应用软件开发中,分页也是常用的操作。排序的作用是为了用户可以更好地按照自己的方式排列数据,更加方便地阅读数据信息。

Flex DataGrid组件的分页

在很多语言中,分页技术都是很常见的。每种技术都有自己的优势和特点,但是基本思路都差不多。基本思路是,把全部数据一次性读到一个数据集中,然后,再与Flex DataGrid组件关联,分页的读取显示。另外一种思路是,先从数据库中读取一页的数据,在Flex DataGrid组件中显示出来,然后再读取,再显示。

下面,用***种思路设计一个分页的程序,数据集采用数组的形式,利用数组的slice()方法,读取一部分数据,然后分页显示。步骤如下。

◆步骤一:创建一个ActionScript3.0文件,命名为DataGridPageExample,类名为DataGridPage-Example,继承自Sprite类,导入用到的类库。代码如下:
 

  1. package  
  2. {  
  3. importfl.controls.Button;  
  4. importfl.controls.DataGrid;  
  5. importfl.controls.ScrollPolicy;  
  6. importfl.data.DataProvider;  
  7. importflash.display.Sprite;  
  8. importflash.events.MouseEvent;  
  9.  
  10. publicclassDataGridPageExampleextendsSprite  
  11. {  
  12.  
  13. }  
  14. }  
  15.  

 ◆步骤二:创建构造函数。代码如下所示:

  1. /************************  
  2. *构造函数  
  3. ***********************/  
  4. publicfunctionDataGridPageExample()  
  5. {  
  6. CreateDataModel();  
  7. CreateDataGrid();  
  8. CreatePageButton();  
  9. }  
  10.  

 #p#◆步骤三:创建数据模型。实际开发中,是从外部数据库或者文件读取数据的,这里只是模拟数据源,便于讲解。在这里,插入了9条数据,然后传递到数组中,代码如下所示:
 

  1. privatevardp:DataProvider;  
  2. privatevararray:Array;  
  3. /************************  
  4. *创建数据模型  
  5. ***********************/  
  6. privatefunctionCreateDataModel():void  
  7. {  
  8. //数据模型  
  9. dp=newDataProvider();  
  10.  
  11. //插入9条数据  
  12. dp.addItem({Name:"Tom",Phone:23579086,QQ:77788899,Software:"Flash"});  
  13. dp.addItem({Name:"Kelly",Phone:33579080,QQ:56788823,Software:"Flex"});  
  14. dp.addItem({Name:"Jim",Phone:83579085,QQ:56788882,Software:"Java"});  
  15. dp.addItem({Name:"Sam",Phone:73579084,QQ:78988811,Software:"Dreamweaver"});  
  16. dp.addItem({Name:"Kaiven",Phone:33576681,QQ:32188897,Software:"Photoshop"});  
  17.  
  18. dp.addItem({Name:"Gray",Phone:23229086,QQ:12388900,Software:"Fireworks"});  
  19. dp.addItem({Name:"Luar",Phone:23579087,QQ:24681899,Software:"DAEMONTools"});  
  20. dp.addItem({Name:"Kite",Phone:85579082,QQ:68080894,Software:"FlashDevelop"});  
  21. dp.addItem({Name:"Polar",Phone:32579086,QQ:21586899,Software:"BeyondCompare"});  
  22.  
  23. array=dp.toArray();  
  24. }  
  25.  

 ◆步骤四:创建Flex DataGrid组件,封装在函数CreateDataGrid中,代码如下所示:
 

  1. privatevardg:DataGrid;  
  2. //数据副本  
  3. privatevararray_page:Array;  
  4. /************************  
  5. *创建Flex DataGrid组件  
  6. ***********************/  
  7. privatefunctionCreateDataGrid():void  
  8. {  
  9. //初始化Flex DataGrid组件,并实例化  
  10. dg=newDataGrid();  
  11.  
  12. //设置位置  
  13. dg.move(20,20);  
  14. //设置宽和高  
  15. dg.setSize(350,125);  
  16. dg.verticalScrollPolicy=ScrollPolicy.AUTO;  
  17. //定义列的标题  
  18. dg.columns=["Name","Phone","QQ","Software"];  
  19.  
  20. //初始化数据  
  21. arrayarray_page=array.slice(0,5);  
  22. //绑定Flex DataGrid组件  
  23. BingDataGrid(array_page);  
  24.  
  25. addChild(dg);  
  26. }  
  27.  

 #p#◆步骤五:绑定数据源,先是移除Flex DataGrid组件中的所有数据,然后遍历参数数组中的数据,增加到Flex DataGrid组件中。***封装在函数BingDataGrid中,便于分页时重复调用。代码如下所示:
 

  1. /************************  
  2. *绑定数据源  
  3. ***********************/  
  4. privatefunctionBingDataGrid(array:Array):void  
  5. {  
  6. //绑定数据源  
  7. dg.removeAll();  
  8. vari:uint=0;  
  9. for(i=0;i<array.length;i++)  
  10. {  
  11. dg.addItem(array[i]);  
  12. }  
  13. }  

 ◆步骤六:创建“上一页”和”下一页“按钮,封装在函数CreatePageButton中,代码如下:
 

  1. /************************  
  2. *创建“上一页”和”下一页“按钮  
  3. ***********************/  
  4. privatefunctionCreatePageButton():void  
  5. {  
  6. varbtnPre:Button=newButton();  
  7. varbtnNext:Button=newButton();  
  8.  
  9. btnPre.move(30,170);  
  10. btnNext.move(240,170);  
  11.  
  12. btnPre.label="上一页";  
  13. btnNext.label="下一页";  
  14.  
  15. btnPre.addEventListener(MouseEvent.CLICK,btnPreClick);  
  16. btnNext.addEventListener(MouseEvent.CLICK,btnNextClick);  
  17.  
  18. addChild(btnPre);  
  19. addChild(btnNext);  
  20. }  
  21.  

 #p#◆步骤七:创建“上一页”按钮的单击事件的函数,读取前5条数据,命名为btnPreClick,代码如下:
 

  1. /************************  
  2. *“上一页”按钮的单击事件  
  3. ***********************/  
  4. publicfunctionbtnPreClick(e:MouseEvent)  
  5. {  
  6. arrayarray_page=array.slice(0,5);  
  7. BingDataGrid(array_page);  
  8. }  

 ◆步骤八:创建“下一页”按钮的单击事件的函数,读取后面的4条数据,命名为btnNextClick,代码如下:
 

  1. /************************  
  2. *“下一页”按钮的单击事件  
  3. ***********************/  
  4. publicfunctionbtnNextClick(e:MouseEvent)  
  5. {  
  6. arrayarray_page=array.slice(5,10);  
  7. BingDataGrid(array_page);  
  8. }  

 ◆步骤九:把三个创建组件的函数增加到构造函数中,代码如下所示:
 

  1. /************************  
  2. *构造函数  
  3. ***********************/  
  4. publicfunctionDataGridPageExample()  
  5. {  
  6. CreateDataModel();  
  7. CreateDataGrid();  
  8. CreatePageButton();  
  9. }  

【编辑推荐】

  1. 探秘Flex与JavaScript交互
  2. 常用FlexBuilder快捷键用法指导
  3. Flex框架Riawave的定制应用
  4. 技术前沿 Flex2.0 从零开始实现文件上传
  5. FlexBuilder开发方法及特点解析 

 

责任编辑:佚名 来源: flashas.net)
相关推荐

2010-08-06 16:07:55

Flex通信

2010-08-03 10:59:14

Flex代码规范

2010-08-12 09:19:31

Flex弹出窗口

2010-08-11 16:03:02

Flex DataGr

2010-08-06 11:04:06

Flex模块化

2010-08-06 14:13:31

FlexDataGrid分页控

2010-07-27 13:53:15

Flex ComboB

2010-07-28 09:29:36

Flex DataGr

2010-08-04 10:04:52

Flex1.5环境配置

2010-07-19 16:25:06

Perl数组

2010-08-11 15:51:45

Flex DataGr

2010-08-11 15:35:47

Flex DataGr

2010-08-11 16:30:49

Flex DataGr

2010-06-22 10:01:40

Symbian开发

2009-07-28 09:51:11

Flex数据分页查询

2010-09-13 17:30:07

CSS优先级

2010-08-17 09:31:08

DIV布局

2009-08-21 15:27:11

C# DataGrid

2010-07-19 14:45:07

Perl进程控制函数

2010-08-11 15:11:52

Flex组合框
点赞
收藏

51CTO技术栈公众号