`

Flex使用DataGrid与项目呈现器

阅读更多
  前言:
  虽然DataGrid确实提供了大量方式与用用程序进行数据交互,但是它会带来另外的开销,比如在性能方面或者文件尺寸方面。在使用DataGrid以前,先考虑你希望用户如何使用数据或控件才是明智的。

dataGridColumn能够解析“属性.属性”格式的引用。

1、为DataGrid添加内联的编辑控件
   只需将editable属性设为true即可实现,默认的编辑控件是文本域。通过itemEditor和editorDataField属性,能够指定编辑数据时所使用的编辑器。itemEditor指定控件,editorDataField指定了当单元格更改时需要对编辑控件上的哪一属性进行赋值,它也指定了编辑完成后需要将控件上的哪一个属性填充到单元格上。
   下面是可以指定的内置控件:

    Button
   CheckBox
   ComboBox
   DateField
   Image
   Label
   NumbericStepper
   Text
   TextArea
   TextInput
  当然也可以根据需求指定自定义控件,只要该控件在类定义中实现了IDropInListItemRender接口即可。

2、 创建MXML的项目呈现器以显示商品
   当使用项目呈现器(itemRender)时,其中存在一个隐式的共有变量,名为data,它代表该行本身的数据。
   <mx:DataGridColumn dataField="xxx" headerText="yyy"
    itemRenderer="xxxxxxx" editable="false"/>
  关于dataGrid的属性variableRowHeight属性设为true表示Flex会为适应缩略图而 调整行高。

3、 创建内联的MXML项目呈现器
  对编译器来说,建立内联的项目呈现器与建立外部文件中的项目呈现器是一样的(实际上编辑器内部将内联项目呈现器中的代码视为单独文件进行编译)
  内联呈现器可以通过outerDocument变量与内联的单元格呈现器的意外部分进行通信。注意,尽管如此,你想引用的包含页中的函数和含量都必须生命为公有的,因为这些函数和变量的访问实际上需要跨越两个组件。

   <mx:itemRender>
     <mx:Component>
       <mx:VBox>
        <mx:Button>
        </mx:Button>
       </mx:VBox>
     </mx:Component>
  </mx:itemRenderer>
  创建内联项目呈现器时,需要使用VBox以便能在不考虑单元格大小的情况下居中放置按钮。

4、 使用set/get函数更新数据
    As允许声明一些后台函数,每当尝试访问某个类的某一属性时,这些函数就会被执行,它们就是所谓的set/get函数。

5、 使用AdvancedDataGrid
    AdvancedDataGrid是数据可视化包的一部分,它扩展了DataGrid的功能。AdvancedDataGrid提供了另外一些特性,并且在数据显示、数据聚合和数据格式化方面有有着更强大的控制力。
    

5.1、 为AdvancedDataGrid排序
       使用AdvancedDataGrid时,可以根据多个列进行排序。若改变AdvancedDataGrid的sortExpertMode属性值,则排序行为会有所改变。当设置该属性为false时,单击某列的标题区域,AdvancedDataGrid就会最先使用该列进行排序。


5.2、 设置AdvancedDataGrid的样式
       a)设置列风格
       注意:样式函数的签名必须接受两个参数,第一个是Ojbect,第二个是AdvancedDataGrid-Column。第一个参数代表AdvancedDataGrid中某列的数据,第二个则包括了styleFunction属性对应列的信息。
       public funtion myStyleFunc(data:Object,col:AdvancedDataGridColumn):Object{
       return {color:0XFF0000, fontWeight:"bold"};
    }
   在显示类别信息的<mx:AdvancedDataGrid>标签中添加styleFunction属性令其引用刚才编写的myStyleFunc。


     b)设置行风格
    <mx:AdvancedDataGrid dataProvider="{dp}"
    height="xxx"  styleFunction="myStyleFunc">
       <mx:columns>
          <mx:AdvancedDataGrid dataField="zzz"/>
          ...  ...
       </mx:columns>
   </mx:AdvancedDataGrid>
 
  这样子会使得每一行都调用样式函数,因此,要向该函数添加逻辑代码使样式不被应用到所有行上。
   public function myStyleFunc(data:Object, col:AdvancedDataGrid){
       if(){} else{}
}


    c)设置单元格样式
   <mx:AdvancedDataGridColumn dataField="cost" styleFunction="xxx"/>


6、 对数据进行分组
    TreeDataGrid特性, 两种方式: 标签和as
   <mx:dataProvider>
     <mx:GroupingCollection id="myGroup" source="{dp}">
       <mx:Grouping>
         <mx:GroupingField name="cat"/>
       </mx:Grouping>
     </mx:GroupingCollection>
    </mx:dataProvider>

  <mx:AdvancedDataGrid creationComplete="myGroup.refresh()"/>

   as分组方式步骤:
   a)创建一个GroupCollection对象
   b)将AdvancedDataGrid的dataProvider赋值给GroupCollection对象的source属性
   c)新创建一个Grouping对象
   d)新创建一个GroupingField对象指定要分组的字段
   e)将GroupingField对象的数组赋值给Group对象的fields属性
   f)将Grouping对象赋值给GroupingCollection对象的grouping属性
   g)数显GroupingCollection
   h)将GroupingCollection赋值给AdvancedDataGrid的dataProvider

   private function initDG():void{
      var myGroupColl:GroupingCollection = new GroupingCollection();
      myGroupColl.source = myADG.dataProvider;
      var group:Grouping = new Grouping();
      var gf:GroupingField = new GroupingField("cat");
      group.fields = [gf];
      myGroupColl.grouping = group;
      myGroupColl.refresh();
      myADG.dataProvider = myGroupColl;
   }
   最后在AdvancedDataGrid标签通过creationComplete事件调用。
  
      
7、 显示摘要数据
    同样有两种途径:标签与as
   只有用GroupingCollection类描述的数据才能显示摘要数据。
    <mx:GroupingField name="cat">
     <mx:summaries>
        <mx:SUmmaryRow summaryPlacement="last">
        <mx:fields>
           <mx:SummaryField dataField="qty"
              operation="SUM" label="summary"/>
        </mx:fields>
         </mx:SummaryRow>
     </mx:summaries>
   </mx:GroupngField>

   summaryPlacement属性指定了摘要行在AdavancedDataGrid控件中的为之。属性可能取值有first, last, group(当前行)

    operation方式有SUM, MIN, MAX, AVG,COUNT
    如果以上方式不能执行你所需的计算,可以使用summaryFunction指定一个函数来计算自定义的数据摘要。

    ——————使用rendererProvider改变显示效果
    在AdvancedDataGrid标签块中的任何位置键入如下式样代码:
    <mx:rendererProviders>
     <mx:AdvancedDataGridRendererProvider
      dataField="summary"  columnIndex="1"
      columnSpan="2" renderer="自定义组件"/>
    </mx:rendererProviders>
  
   

   ————————使用as方式显示摘要数据
   private function initDG():void{
      var myGroupColl:GroupingCollection = new GroupingCollection();
      myGroupColl.source = myADG.dataProvider;
      var group:Grouping = new Grouping();
      var gf:GroupingField = new GroupingField("cat");
      group.fields = [gf];
      myGroupColl.grouping = group;

     //实现摘要部分代码
      var sr:SummaryRow = new SummaryRow();
      var sf:SummaryField = new SummaryField();
      sf.dataField = "qty";
      sf.operation = "SUM";
      sf.label = "summary";
      sr.fields = [sf];
      sr.summaryPlacement = "last";
      gf.summaries = [sr];
 
      myGroupColl.refresh();
      myADG.dataProvider = myGroupColl;
   }
分享到:
评论
1 楼 dingherry 2010-11-24  
如何使<mx:GroupingField name="xxxx"/>前面有CheckBox?

相关推荐

    Termux (Android 5.0+).apk.cab

    Termux (Android 5.0+).apk.cab

    基于go、vue开发的堡垒机系统(运维安全审计系统)全部资料+详细文档.zip

    【资源说明】 基于go、vue开发的堡垒机系统(运维安全审计系统)全部资料+详细文档.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    葡萄城手册,快速上手,灵活报表

    制作报表

    基于C++与Qt的金山培训大作业源码汇总

    本项目为金山培训大作业源码汇总,采用C++与Qt技术构建,包含401个文件,涵盖106个C++源文件、72个头文件、41个PNG图片、27个项目文件以及HTML、JavaScript、CSS等多种文件类型。项目包含四个主要模块:KVector向量库、命令行会议系统、KSvg绘图板和KHttp音乐播放器。尽管最终未能入选,但展现了作者在C++编程和Qt框架应用方面的扎实功底和努力。

    (26408240)STM32F103+四个VL53L0代码(2020新).zip

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    基于课程设计:C语言爬虫、详细文档+全部资料+高分项目.zip

    【资源说明】 基于课程设计:C语言爬虫、详细文档+全部资料+高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    (176629254)杭州电子科技大学自动控制原理期末试卷答案 复习ppt

    《自动控制原理》是自动化及相关专业的重要课程,涵盖了控制系统的基础理论和分析方法。这份资料集是针对杭州电子科技大学自动控制原理课程的期末复习资源,包含了试卷答案和复习PPT,对于学习者来说是一份非常宝贵的参考资料。 我们来看文件"9自控原理第五章习题参考答案.doc",它提供了第五章的习题解答。第五章通常涉及根轨迹法,这是分析线性系统稳定性的一种图形方法。通过绘制根轨迹,我们可以直观地理解系统动态性能的变化,例如系统的稳定性、超调量和调节时间等。 接着,"1第一章作业(答案).docx"涵盖了课程的初步概念,如控制系统的基本组成部分、控制系统的定义以及开环与闭环控制的区别。第一章的内容通常包括控制系统的基本模型,如传递函数和信号流图。 "10测试4.docx"和"13第7章测试.docx"可能是关于控制系统设计和分析的测试题目,可能涉及到频率响应分析或状态空间模型等内容。第七章常常讨论系统稳定性分析,比如奈奎斯特稳定判据或劳斯判据。 "7测试1.docx"可能包含有关拉普拉斯变换和控制系统动态特性的问题,这是控制系统分析的基础工具。 "4自动控制第二章习题答案.pdf"提供了第二章习题

    066 - 直播逗大哥话术.docx

    066 - 直播逗大哥话术

    AOP项目demo 案例

    AOP项目demo 案例

    皮带输送线3D+2DCAD+加工件标准件清单BOMsw2016可编辑全套技术资料100%好用.zip

    皮带输送线3D+2DCAD+加工件标准件清单BOMsw2016可编辑全套技术资料100%好用.zip

    154-基于stm32单片机花样流水灯设计Proteus仿真+源程序.zip

    154-基于stm32单片机花样流水灯设计Proteus仿真+源程序.zip

    鲸鱼WOA-XGboost拟合预测建模模型,数据格式多维自变量输入,单维因变量输出,直接替数据就可以使用,程序内注释详细

    鲸鱼WOA-XGboost拟合预测建模模型,数据格式多维自变量输入,单维因变量输出,直接替数据就可以使用,程序内注释详细

    基于springboot的学生综合成绩测评系统源码(java毕业设计完整源码).zip

    项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    RocketDock-v1.3.5

    RocketDock-v1.3.5是一款专为Windows 7设计的桌面工具,它模仿Mac OS X的Dock功能,通过直观的图标排列提高应用启动效率。该工具提供快捷启动、动画效果、自定义设置以及扩展性,使用户能够根据个人喜好调整Dock栏并减少桌面杂乱。安装和设置过程简单,配有详细的说明文件,帮助用户更好地了解和使用工具。

    基于springboot的会员制医疗预约服务管理信息系统源码(java毕业设计完整源码+LW).zip

    会员制医疗预约服务管理信息系统的作用,可以提高会员制医疗预约服务管理的工作人员的效率,协助他们对会员制医疗预约服务信息进行统一管理,为管理者提供信息储存和查询搜索系统。一个良好的会员制医疗预约服务管理信息系统可以实现对会员制医疗预约服务的精细化管理:对在线会员制医疗预约服务管理流程的全过程进行电子化操作,其主要作用是管理和控制会员制医疗预约服务所有的信息,分析库存数据,使工作人员对会员制医疗预约服务管理信息系统进行监管,根据系统所提供的相应信息,采取适当的措施,及时补救管理中的漏洞,提高在线会员制医疗预约服务管理的工作效率,使得在线会员制医疗预约服务管理变的更加系统和规范。 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    (2368806)CCNA中文版PPT

    **CCNA(思科认证网络助理工程师)是网络技术领域中的一个基础认证,它涵盖了网络基础知识、IP编址、路由与交换技术等多个方面。以下是对CCNA中文版PPT中可能涉及的知识点的详细说明:** ### 第1章 高级IP编址 #### 1.1 IPv4地址结构 - IPv4地址由32位二进制组成,通常分为四段,每段8位,用点分十进制表示。 - 子网掩码用于定义网络部分和主机部分,如255.255.255.0。 - IP地址的分类:A类、B类、C类、D类(多播)和E类(保留)。 #### 1.2 子网划分 - 子网划分用于优化IP地址的分配,通过借用主机位创建更多的子网。 - 子网计算涉及掩码位数选择,以及如何确定可用的主机数和子网数。 - CIDR(无类别域间路由)表示法用于更有效地管理IP地址空间。 #### 1.3 私有IP地址 - 为了节省公网IP地址,私有IP地址被用于内部网络,如10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。 #### 1.4 广播地址 - 每个网络都有一个特定的广播地址,所有数据包都会发送到这个地址以达到同一网络内的所有设备。

    基于springboot的藏区特产销售平台源码(java毕业设计完整源码+LW).zip

    项目实现了对特产信息管理、特产分类管理、特产分类管理、特产评分管理、系统管理、订单管理等业务进行管理。 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea

    “个人事务云服务”:日常事务管理系统的云计算应用

    随着21世纪网络和计算机技术的飞速发展,它们已经与我们的日常生活紧密融合。当前网络的运行速度已经达到千兆级别,覆盖范围广泛,深入到生活的每一个角落。这一进步推动了管理系统的发展,使得远程处理事务、远程工作信息管理和实时追踪工作状态成为可能。网上管理系统以其前所未有的体验满足了新时代的工作需求,因此得到了大力发展。 本系统是一个个人日常事务管理系统,利用计算机和网络技术开发的在线平台,能够实现日常安排、消费记录和重要提醒设置等功能。系统采用SSM框架和Vue技术,数据库使用MySQL,开发环境为Eclipse。系统用户角色包括普通用户和管理员,功能涵盖个人中心管理、用户管理、日常安排管理、消费记录管理和重要提醒管理。用户可以记录消费、安排日常事务和设置重要提醒,而管理员则负责管理用户信息和基础数据信息。该系统不仅方便了用户和管理员,还提高了个人事务管理的效率,更适应现代人的生活方式。

    基于java+springboot+mysql+微信小程序的考研资料分享系统 源码+数据库+论文(高分毕业设计).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea、微信开发者工具 数据库:MySql5.7以上 部署环境:maven 数据库工具:navicat

    如何使用Python和PIL库生成带竖排文字的封面图像

    如何使用Python和PIL库生成带竖排文字的封面图像

Global site tag (gtag.js) - Google Analytics