如何为DataGrid动态列通过变量列名设置值?
解决DataGrid动态列赋值的问题
这事儿其实挺简单的,你只需要把原来的点语法换成方括号语法就能实现动态指定列名了!
在ActionScript(以及很多类似的面向对象语言里),访问对象属性有两种方式:
- 点语法:
obj.propertyName—— 适合属性名固定的场景 - 方括号语法:
obj["propertyName"]—— 支持用变量来动态传入属性名
针对你的需求,具体写法如下:
假设你已经把目标列名存在了一个字符串变量里,比如叫dynamicColName,它的值可能是"salary"、"age"或者其他列名,那赋值的时候直接这么写:
// 示例:给指定行的动态列赋值 var dynamicColName:String = "salary"; // 这里可以换成任意你需要的列名字符串 var targetRowIndex:int = 0; // 目标行的索引(注意从0开始) // 核心写法:用方括号包裹列名变量 datagride.dataProvider[targetRowIndex][dynamicColName] = 8000;
完整示例场景
比如你要循环给不同的动态列赋值,可以这么写:
// 模拟动态列名列表 var columnList:Array = ["salary", "age", "department"]; var targetRow:int = 1; // 遍历动态列,逐个赋值 for each(var colName:String in columnList) { switch(colName) { case "salary": datagride.dataProvider[targetRow][colName] = 9500; break; case "age": datagride.dataProvider[targetRow][colName] = 28; break; case "department": datagride.dataProvider[targetRow][colName] = "Engineering"; break; } }
注意事项
- 要确保
targetRowIndex是有效的,也就是不能超出dataProvider的行数范围,否则会报错或者返回空值 - 确认
dynamicColName对应的列确实存在于dataProvider的每一行对象中,避免出现属性未定义的问题
内容的提问来源于stack exchange,提问作者Tanushri Godha
相关产品推荐
相关产品推荐

