动态添加行AdvancedDataGrid Flex

时间:2011-06-23 18:35:29

标签: flex actionscript-3 advanceddatagrid

我有一个从html表动态构建的AdvancedDataGrid。 html由服务器提供,因此我的代码必须动态地为不同的列/行工作。

我正在构建列并且它们正确显示,但是当我添加行时,我遇到了问题。以下代码片段显示迭代所有列并在每个列下添加一个值到一个对象(以生成一个完整的行),然后将其添加到ArrayCollection,稍后将其设置为AdvancedDataGrid的dataProvider

//create an item to work with
var chartItem:Object = new Object();
for( var j:int = 0; j < columnResult.length ; j++ ) 
{
    //this is the data that goes under the column (headerArray)
    var item:String = removeformat(removetd(columnResult[j]));
    //grab the header (this is which column the value will be added
    var head:String = headerArray[j];
    //set the value to header (pair)
    chartItem[head] = item;
}
//add the chartItem (row) to the main collection
arr.addItem(chartItem);

我的问题是,当“head”的值为0时,如列标题为“0”时,项目将添加到位置[0]而不是0作为字符串。

我查了一些例子并尝试:

chartItem.head但是只假设列标题是'head'而不是抓取head var的值

1 个答案:

答案 0 :(得分:1)

无法在关联数组中使用数字作为索引。

大多数情况下,关联数组中的索引只是Object的变量名。这就是您可以使用obj["someKey"]obj.someKey访问数据的原因。当然,您可以在键中使用变量名称中不允许的字符(如空格,特殊符号)。但是,您只能使用括号访问它们,而不能使用点(obj["foo/bar"]无效,obj.foo/bar无效)。所以,不建议这样做......

好吧,回到你的问题:我建议你在所有列名前加一个字符(例如使用“_0”)。由于您动态创建AdvancedDataGrid列不应该是一个问题。您可以明确设置这些列的headerText,以便在列标题中显示“0”而不是“_0”。