我创建要添加到NavigatorConent()的每个数据网格,但是,如何通过ID检索数据网格,以便我可以将ArrayCollection指向datagrid的dataprovider?
private var pdg:String;
private function stabAdd():void {
var dg1:DataGrid = new DataGrid();
var cn:NavigatorContent = new NavigatorContent();
stab.addElement(cn);
cn.name = "nc"+nu;
dg1.id = "nc"+nu;
pdg = dg1.id;
dg1.addEventListener(MouseEvent.CLICK,cc);
nu++;
这会抛出一个无法找到pdg的错误,我想知道为什么:
trace(DataGrid(pdg));
答案 0 :(得分:1)
nu ++的目的是分配一个 每个人的唯一名称(dg1,dg2等) datagrid,以便我可以分配AC datagrid的dataprovider
我可以尊重为每个组件提供唯一名称的必要性。在ActionScript中执行此操作的适当方法不是指定组件的id / name字段,而是创建组件的实例作为变量。像这样:
protected var myGrid : DataGrid;
现在,您可以在组件中的任何位置或其子项中访问myGrid,而无需创建一些复杂的方案。如果您需要多个DataGrid,可以将它们存储在一个数组中:
protected var myGridArray : Array = new Array();
稍后在你的代码中 - 可能是createChildren()做这样的事情:
loop
var newGrid : DataGrid = new DataGrid()
myGridArray.push(newGrid);
end loop
在大多数情况下,这是所有基于Flex列表的组件使用itemRenderers执行此操作的方式。它们有一系列可见的渲染器。
如@J_A_X_ comments中所述,您正在尝试将pdg(字符串)转换为DataGrid。我希望返回一个空值,因为Flex强制转换会悄然失败。
如果您需要更多帮助,则必须告诉我们您收到的明确错误,可能包含行号和更多代码。