2010-05-17 65 views
0

我试图找出如何基于这样一个XML对象来管理一个DataGrid填充一个DataGrid列和行的变量数:Flex中

<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> 

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

+0

这对我来说似乎是一种常用的方法;就像你试图用XML创建一个DataGrid的布局一样。只需发送XML数据并让它处理布局。 – JeffryHouser 2010-05-17 23:53:42

+0

有没有办法使用相同的XML元素名称为DataGridColumn设置dataField(如上例所示)? – Mino 2010-05-21 19:49:24

回答

1

行数据是否是列的子元素?如果是这种情况,您将需要先转换数据。 Flex中的DataGrid和HTML中的表格基于数据库的约定,其中行为单个记录,而不是列。

如果谁/提供数据拒绝遵守这一点,那么最好是操纵数据以适应视图控件,而不是反之,这就是你现在正在做的事情。

+0

感谢您的帮助。我赞同你。我正在考虑按列而不是按行填充数据网格。 我发现这篇文章真的帮助了我:http://flexpearls.blogspot.com/2008/02/generating-dg-columns-for-xml-data.html 谢谢。 :) – Mino 2010-05-18 20:28:32

1

datagrid的行将是动态的。它将根据数据提供者中的项目数量进行填充。但要使列动态化,您必须使用AS来完成。

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

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;