Flex 动态datagrid的应用


            Flex有2种常用的datagrid:datagrid和advanceddatagrid,本文指功能更加强大的advanceddatagrid。所谓advanceddatagrid的动态应用是指,其列数不确定,随着数据源的改变,其列自适应填充(列顺序、列抬头设置、宽度设置等)。
  为什么要讨论datagrid的动态应用,是因为实际业务当中往往有很多报表其列数是不确定的,这通常是指横向报表。如有张报表是这样的:
  年份       月份       产品类别       销售额
  2010        6            笔记本            10000(万元)
  2010        6            台式机            20000(万元)
  ……
  现在要把这张报表横过来,展示如下:
  年份       月份       产品类别1     产品类别2     产品类别3…
  2010        6             10000(万元)20000(万元)     …
  此时,其列是随着产品类别数量变动而变动的,即其列是需要动态改变的,虽Flex提供了现成的olapdatagrid可用,由于其使用不方便、展示慢等原因,简单的动态列报表还是用advanceddatagrid来实现,那么如何实现?
  1、  约定
  1)      flex使用blazeds与java进行通讯;
  2)       
  2、  在java定义一个flex的datagrid列属性设置类
  JavaColDef,该类有name、text、width等属性,分别表示名称、抬头和宽度;当然为了映射,最好flex端定义一个与JavaColDef结构一样的FlexColDef,并映射到JavaColDef。
  3、  在java端定义一个获取列属性设置的函数
  Public JavaColDef[] getDataGridSetting()
  该函数返回列属性数组,在数组中的填充顺序即默认为该列在grid中的显示顺序。
  4、  在flex端进行datagrid的数据填充处理
  假设flex执行了查询操作得到了数据集{dataset},当我们得到该数据集的时候,我们立即调用getDataGridSetting方法去获取列属性定义。
  获取到列属性定义之后,执行表格重建操作。
  1)  先移除所有列;
  2)  根据属性列集合,依次给datagrid添加列,并设置其属性;
  3)  绑定数据集{dataset}
  5、  总结
  Datagrid动态列实现,只要进行2个操作即可。
  1)  开发人员自行实现getDataGridSetting()函数;
  2)  数据查询事件处理,查询成功后调用统一函数,void rebuildGrid(array:ArrayCollection)即可。

猜你喜欢

转载自cztu25cztu.iteye.com/blog/1574493