Flex新手的排序在這裏,所以忍受着我。我有定義一個DataGrid如下:DataGrid列名似乎不具有約束力
<mx:Script>
...
private function getColumns(names:ArrayCollection):Array {
var ret:Array = new Array();
for each (var name:String in names) {
var column:DataGridColumn = new DataGridColumn(name);
ret.push(column);
}
return ret;
}
</mx:Script>
<mx:DataGrid id="grid" width="100%" height="100%" paddingTop="0"
columns="{getColumns(_dataSetLoader.columnNames)}"
horizontalScrollPolicy="auto" labelFunction="labelFunction"
dataProvider="{_dataSetLoader.data}"
/>
...其中_dataSetLoader是一個對象,看起來的一個實例,如:
[Bindable]
public class DataSetLoader extends EventDispatcher {
...
private var _data:ArrayCollection = new ArrayCollection();
private var _columnNames:ArrayCollection = new ArrayCollection();
...
public function reset():void {
_status = NOTLOADED;
_data.removeAll();
_columnNames.removeAll();
}
...
復位時()被調用的dataSetLoader例如, DataGrid會按預期清空單元格中的數據,但會留下列名稱,即使reset()會調用_columnNames.removeAll()。不應該在集合中更改觸發DataGrid中的更改嗎?
好吧,列是一個數組而不是ArrayCollection。但無論如何,我還嘗試將一個名爲_columnNamesAsArray的數組添加到DataSetLoader類中,並在column =子句中引用它,並在reset()中清空它,但得到了相同的結果。另外,我的理解是數據綁定也可以跨函數調用,只要函數的參數是綁定的呢?也就是說,_columnNames中的更改應該觸發對getColumns()的調用。我錯了嗎? – Jason 2010-03-23 22:08:35