【问题标题】:Dynamically adding rows AdvancedDataGrid Flex动态添加行 AdvancedDataGrid Flex
【发布时间】:2011-06-23 18:35:28
【问题描述】:

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

我正在构建列并且它们显示正确,但是当我开始添加行时,我遇到了问题。以下代码 sn-p 显示迭代所有列并将这些列中的每一列下的值添加到对象(以形成完整的行),然后将其添加到 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 的值

【问题讨论】:

    标签: apache-flex actionscript-3 advanceddatagrid


    【解决方案1】:

    在关联数组中不能使用数字作为索引。

    大多数时候,关联数组中的索引只是对象的变量名。这就是您可以使用obj["someKey"]obj.someKey 访问数据的原因。当然,您可以在键中使用变量名中不允许的字符(如空格、特殊符号)。但是,您只能使用方括号而不是点来访问那些(obj["foo/bar"] 有效,obj.foo/bar 无效)。所以,不建议这样做……

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

    【讨论】:

    • 感谢您解决了标题为“0”的列的问题。但是我现在似乎有另一个问题......似乎只有一些数据进入了表格。我没有这个问题,我有一个只有几列的简单表格,但是当我有一个带有分组的表格时(请注意,分组显示正确并且对 headerarray 的检查仍然显示它获得了正确的列标题)一些数据不见了。我不知道从哪里开始,因为单步执行它似乎工作正常的代码。
    • 您应该将此问题标记为已回答,并针对您的其他问题提出新问题。最好使用一些工作示例代码。
    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 2011-07-08
    • 2010-12-15
    • 2011-12-25
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多