它显示错误:
1120: Access of undefined property myArray. DataGrid.mxml /DataGrid/src line 10
源代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var myArray:Array = new Array();
myArray[0] = "Tom"; // string
[Bindable]
public var arrColl:ArrayCollection = new ArrayCollection(myArray);
]]>
</mx:Script>
<mx:AdvancedDataGrid id="ad"
columns="{myArray}"
dataProvider="{arrColl}"/>
</mx:Application>
有什么问题?
答案 0 :(得分:0)
除非你确切知道自己在做什么,否则不应该直接在脚本块中编写任意代码。相反,你应该这样做:
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="initialize()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var myArray:Array = new Array();
[Bindable]
public var arrColl:ArrayCollection;
private function initialize() : void
{
myArray[0] = "Tom";
arrColl = new ArrayCollection(myArray)
}
]]>
</mx:Script>
<mx:AdvancedDataGrid columns="{myArray}" dataProvider="{arrColl}"/>
</mx:Application>
此代码的另一个问题是myArray[0] = "Tom"
不会导致数据网格更新。为此,您必须自己分配变量myArray
(例如myArray = ["Tom"]
)。
答案 1 :(得分:0)
您无法在类定义中开始为数组赋值。您需要在方法中移动myArray[0] = "Tom";
行。如果您希望它在初始化时发生,请在Application标记creationComplete="yourEventHandler"
中指定一个事件处理程序,并将该行放在yourEventHandler()
中。希望有所帮助,如果您需要更多代码,请告诉我们。)