`

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?

相关推荐

    Flex4 DataGrid控件行编辑项目

    在Flex4.6开发环境中,...总的来说,这个Flex4.6的DataGrid行编辑项目展示了如何通过定制和扩展DataGrid组件,提高用户界面的交互性和功能性。开发者可以在此基础上进一步定制,以适应不同的业务需求和用户体验。

    Flex 自定义Datagrid的ItemRender

    使用Flex的data属性将数据字段与ItemRenderer中的控件关联起来。例如,如果数据源中有一个名为`creationDate`的字段,可以这样绑定: ```actionscript dateField.dataField = "creationDate"; ``` 4. **处理...

    在flex的dataGrid控件中显示图片的实践

    本文将深入探讨如何在DataGrid中显示图片,特别是在与Spring、Hibernate和Struts等框架集成的背景下,如何处理二进制数据并将其在Flex前端呈现。 首先,让我们了解Flex的基本概念。Flex是一个基于ActionScript和...

    flex datagrid

    虽然标题是“flex datagrid”,但这个文件可能展示了如何结合使用DataGrid和Tree来呈现不同类型的数据。 5. **dataGridEvent.mxml**:此文件可能涉及DataGrid的事件处理,例如排序事件(sort)、选择事件...

    flex DataGrid改变指定行的背景颜色

    在Flex开发中,DataGrid控件是用于展示数据表格的常用组件,它可以高效地呈现大量结构化信息。在某些情况下,我们可能需要根据特定条件改变DataGrid中的某一行或几行的背景颜色,以突出显示或者区分不同的数据状态。...

    flex 的datagrid分页

    1. **数据源与分页**:在Flex中,DataGrid的数据源通常由ArrayCollection或XMLListCollection等可迭代对象提供。为了实现分页,我们需要对数据源进行分页处理。这可以通过在服务器端对数据进行切片,或者在客户端...

    flex Datagrid checkbox全选

    Datagrid由一系列DataGridColumn组成,每个列可以自定义渲染器来呈现不同类型的数据显示,例如文本、图片或者在这里我们需要的checkbox。全选功能通常通过在Datagrid的表头添加一个可点击的checkbox来实现,当用户...

    Flex实践——Datagrid的打印预览与打印

    本文将围绕“Flex实践——Datagrid的打印预览与打印”这一主题,深入探讨如何在Flex应用中实现数据网格控件Datagrid的打印功能,包括预览和实际打印操作。 首先,Datagrid是Flex中一个非常重要的组件,它用于展示二...

    Flex4权威指南+随书源代码+Flexbuild使用工具

    本博客提供的所有教程的资源原稿均来自于互联网...12. 使用DataGrid与项目呈现器 13. 使用拖放 14. 实现导航 15. 使用格式化器和验证器 16. 使用样式定制Flex应用 17. 使用皮肤定制Flex应用 18. 自定义ActionScript组件

    flex datagrid分页 动态绑定数据源

    Flex Datagrid是一个灵活的数据呈现控件,能够处理各种数据源,包括ArrayCollection、XMLListCollection等。它允许用户通过列定义自定义显示样式,支持排序、过滤、选择等功能,非常适合于数据密集型的应用场景。 ...

    flex itemRenderer 渲染机制的概念和使用

    itemRenderer通常与List、DataGrid等数据绑定组件一起使用,通过设置其`itemRenderer`属性来指定自定义的渲染器类。 ### 二、itemRenderer的使用 1. **创建itemRenderer组件** 要创建一个itemRenderer,首先需要...

    Flex4.5导入Excel/csv到DataGrid及DataGrid右键

    在Flex开发中,数据展示是常见且重要的任务之一,而DataGrid组件因其强大的数据呈现和交互能力,常常被用于复杂的数据显示。本知识点将详细介绍如何在Flex 4.5环境中将Excel和CSV文件导入到DataGrid中,以及如何...

    flex4做的itemrenderer呈现器

    在主应用中,你需要告诉List或DataGrid使用`friendItem`作为其ItemRenderer。这可以通过在数据列或listItemRenderer属性中设置完成: ```actionscript ``` 7. **优化和性能**: 为了提高性能,...

    flex as actionscript datagrid 背景色 flash itemRenderer script iframe overrider 跳转到别的页面

    综上所述,这个项目可能涉及到一个使用Flex DataGrid展示节目或课程播表的应用,播表数据存储在XML文件中,每个节目单元格通过自定义的ItemRenderer展现,可能包含Flash播放器,并且可以通过点击单元格触发页面跳转...

    Flex4.5之DataGrid表格组件的运用.pdf

    首先,需要在Flex项目中引入DataGrid组件。默认情况下,DataGrid会显示一定的默认数据,这是因为开发者通常需要一个初始的状态来展示数据。在实际开发过程中,我们可以自定义DataGrid的数据来源以及外观样式等属性。...

    datagrid行的背景色

    Flex中的DataGridItemRenderer负责呈现Datagrid的每一行。默认的renderer可能无法满足我们的需求,因此我们需要创建一个自定义的renderer。在Flex项目中创建一个新的MXML组件,例如`CustomGridRow.mxml`,并继承自`...

    好看的FLEX相册

    标题中的“好看的FLEX相册”指的是一种使用Adobe Flex技术构建的相册应用,它在视觉呈现上具有吸引力,提供了良好的用户体验。Flex是基于ActionScript 3.0的开源框架,主要用于创建富互联网应用程序(RIA)。这类...

    Rss.zip_flex

    本项目“Rss.zip_flex”便是基于Flex技术实现的RSS订阅器,它主要展示了如何利用Flex来处理RSS数据并呈现给用户。 首先,让我们了解RSS订阅器的基本功能。RSS(Really Simple Syndication)是一种内容聚合格式,...

    flex 入门教程

    - **事件处理**:介绍Flex中的事件模型,包括事件类型、事件监听器的添加与移除等。 #### 6. 自定义事件与组件 - **自定义事件**:学习如何创建自定义事件以及如何在组件之间传递这些事件。 - **自定义组件**:...

Global site tag (gtag.js) - Google Analytics