Вид новичка 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