0

所以,我想要的是制作一个分成几部分的dataGrid,如下所示:

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
  • 我也可以(如有必要)在它们之间放置一个寄存器,如示例所示。例如,就像“会话 2”是 dataProvider.getItemAt(3) 对象,会话 3 是 dataProvider.getItemAt(7)。

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

4

1 回答 1

2

您可以考虑将 AdvancedDataGrid 与分层数据一起使用。 更多信息在这里

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

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 width="100%" height="100%">
    <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 中创建列数组。

于 2012-09-28T15:47:40.040 回答