无法找到datagrid

时间:2011-05-10 02:01:17

标签: flex actionscript

我创建要添加到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));

1 个答案:

答案 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强制转换会悄然失败。

如果您需要更多帮助,则必须告诉我们您收到的明确错误,可能包含行号和更多代码。