我正在创建一个二维列表,在“day”结尾处有连续的数字,用作DataGrid的dataProvider
我一直通过命令访问它们
dg1.selectedItem.day1
dg1.selectedItem.day2
dg1.selectedItem.day3
等...
有没有办法取字符串(“day”+ i)并将其转换为(它是什么?变量名?) 所以我可以做一些事情:
for(var i:Number=1; i<numFields; i++)
{
dg1.selectedIndex = i-1;
dg1.selectedItem.(mysteryFunction("day"+i)) = 42;
}
如果有一个我可以用于mysteryFunction的函数,或者使用什么数据类型,任何信息都会非常有用
这就是我一直在使用的(如此繁琐):
<mx:XMLList id="sched"> <field> <day1></day1> <day2></day2> <day3></day3> </field> <field> <day1></day1> <day2></day2> <day3></day3> </field> ... </mx:XMLList>
答案 0 :(得分:1)
您正在寻找的“神秘功能”就像使用括号进行索引一样简单:
for(var i:Number=1; i<numFields; i++)
{
dg1.selectedIndex = i-1;
dg1.selectedItem["day"+i] = 42;
}
令人惊讶的是,它被称为属性。
答案 1 :(得分:0)
使用Array
或者如果你要绑定它(我有点打赌)使用ArrayCollection
而不是单独命名这些变量。
如果成员是由某个程序生成的,那么最好将所有这些成员放在我上面提到的一个集合类中,然后开始处理。从长远来看,它使生活更轻松。
E4X是处理XML时的方法。 Mozilla的家伙可以说有更好的explanation技术。因此,如果您的XML存储在变量中:
var tree:XML = <field>
<day1></day1>
<day2></day2>
<day3></day3>
您可以这样做:
tree.day1 = 42;
为什么要这个mysteryFunction()
? dataProvider
对象只是某个Type的集合。您已经知道类型,对吗?阅读this。
无论如何,没有这样的神秘功能。但请注意,使用数字进行字符串连接会将数字转换为字符串。尝试
trace("str " + 42);