在Flex中使用可变数量的列和行填充Datagrid

时间:2010-05-17 23:24:38

标签: flex actionscript-3 actionscript flexbuilder

我试图弄清楚如何基于这样的XML对象来管理Datagrid:

<matrix rows="5" columns="5">
<column>
    <row>0.5</row>
    <row>0.21</row>
</column>
<column>
    <row>0.6</row>
    <row>0.9</row>
</column>
<column>
    <row>0.5</row>
    <row>0.5</row>
</column>
<column>
    <row>0.8</row>
    <row>0.4</row>
</column>
</matrix>

我需要根据不同的XML对象填充Datagrid列名,并使用上面的XML填充每个列的行。我目前能够创建Datagrid并填充其列标题,但我不确定如何为每列添加行。将更新上述XML,并添加和删除新的行和列元素。当然,这将绑定到Datagrid以显示更新。

2 个答案:

答案 0 :(得分:1)

数据网格的行将是动态的。它将根据数据提供程序中的项目数填充。但要使列动态化,您必须使用AS。

Datagrid有一个名为“columns”的属性。这包含该数据网格的DataGridColumn对象。您可以检查数据提供者,并将DatagridColumns添加或删除到“columns”数组。

var cols:Array = [];
for(var i:int = 0;i<dataProvider.length;i++)
{
   var DGCol:DataGridColumn = new DataGridColumn();
   DGCol.dataField = "data1";
   cols.push(DGCol);
}
myDg.columns = cols;

答案 1 :(得分:1)

行数据是否是列的子项一定是真的吗?如果是这种情况,您将需要首先转换数据。 Flex中的DataGrid和HTML中的Table基于数据库的约定,其中行作为单独的记录而不是列。

如果提供数据的人/任何人拒绝遵守此规定,您最好操纵数据以适应视图控制而不是反之亦然,这就是您现在正在做的事情。