使用 Flex 3 在会话中划分 dataGrid

Posted

技术标签:

【中文标题】使用 Flex 3 在会话中划分 dataGrid【英文标题】:Divide dataGrid in sessions with Flex 3 【发布时间】:2012-09-20 11:48:29 【问题描述】:

所以,我想要的是将数据网格分成几部分,如下所示:

Column 1    Column 2    Column 3    Column N
data1_r1    data2_r1    data3_r1    data4_r1
data1_r2    data2_r2    data3_r2    data4_r2
data1_r3    data2_r3    data3_r3    data4_r3
                  Session 2         
data1_r5    data2_r5    data3_r5    data4_r5
data1_r6    data2_r6    data3_r6    data4_r6
data1_r7    data2_r7    data3_r7    data4_r7
                  Session 3         

基本上我想要的是那个。会话是动态的(我不知道每个会话之前有多少寄存器,也不知道会有多少会话,但我可以计算执行时间)。

我还可以将每个会话分成一个单独的 ArrayCollection 我可以将它们全部放入一个 ArrayCollection 我也可以(如有必要)在它们之间放置一个寄存器,如示例所示。例如,“Session 2”是 dataProvider.getItemAt(3) 对象,而 Session 3 是 dataProvider.getItemAt(7)。

有可能吗?如果是这样,我应该寻找什么来帮助我解决这个问题? 谢谢

【问题讨论】:

【参考方案1】:

您可以考虑将 AdvancedDataGrid 与分层数据一起使用。 More info on that here.

对于您的情况,我认为您需要一个“会话”对象;这可以像这样的对象一样简单:

package com.something.something

    import mx.collections.ArrayCollection;

    public class SessionObject
    
        public function SessionObject()
        
        

        public var label :String;
        public var children :ArrayCollection 
    

会话对象内的“Children”集合的每个元素都将代表您的一个子行。从概念上讲,它们是这样的对象:

package com.something.something

    import mx.collections.ArrayCollection;

    public class SessionData
    
        public function SessionData()
        
        

        public var column1 :String;
        public var column2 :String;
        public var column3 :String;
        public var column4 :String;
    

然后显示如下:

<mx:AdvancedDataGrid  >
    <mx:dataProvider>
        <mx:HierarchicalData source="dpHierarchy"/>
    </mx:dataProvider>
    <mx:columns>
        <mx:AdvancedDataGridColumn dataField="label"/>
        <mx:AdvancedDataGridColumn dataField="column1 "/>
        <mx:AdvancedDataGridColumn dataField="column2" />
        <mx:AdvancedDataGridColumn dataField="column3"/>
        <mx:AdvancedDataGridColumn dataField="column4"/>
    </mx:columns>
</mx:AdvancedDataGrid>   

如果您在编译时确实有未知数量的列,事情会变得更加困难;但如果需要,您可以在运行时“即时”在 ActionScript 中创建列数组。

【讨论】:

列是已知的和静态的,动态的是会话数量和每个会话中的记录数量。 那么在我定义的结构中创建数据可能就是答案。

以上是关于使用 Flex 3 在会话中划分 dataGrid的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Adob​​e Flex 中合并 DataGrid/Advanced DataGrid 中的单元格

在 Flex 中从 DataGrid 中删除选定的行

Flex 4.5 (Hero) s:Datagrid RowCount

Flex - 通过文本输入搜索/过滤 DataGrid

如何在 Flex 中控制 Spark Datagrid 的滚动条位置?

如何使用mx Prints DataGrid打印flex spark datagrid?或者是否有其他方法可以在不使用mx Prints DataGrid的情况下实现此目的?