Согнуть Датагрид в Массив? - PullRequest
1 голос
/ 21 января 2009

Мне нужно преобразовать таблицу сетки данных в Adobe Flex в ArrayCollection. Я ожидал, что смогу пройти по каждой строке сетки данных и записать ее в коллекцию Array, но единственный метод для доступа к данным в сетке данных, который я могу найти, - это SelectedItem, который мне не помогает.

Очевидно, что можно просто скопировать dataProvider для сетки данных, но моя сетка данных является редактируемой, и мне нужно в любое время сохранить состояние сетки данных в базе данных. Кто-нибудь может порекомендовать способ сделать это?

очень ценится

Матф

Ответы [ 2 ]

3 голосов
/ 31 января 2009

Если ваша DataGrid:

<mx:DataGrid id="someDG" dataProvider="{this.provider}" />

Затем проверьте, является ли this.provider Array или ArrayCollection. Если это ArrayCollection, то получить к нему доступ просто:

var gotIt:ArrayCollection = this.someDG.dataProvider as ArrayCollection;

если это массив, то:

var gotIt:ArrayCollection = new ArrayCollection(this.someDG.dataProvider as Array);

Надеюсь, это поможет.

2 голосов
/ 21 января 2009

Вы можете сделать это, перебирая поля в столбцах, но вы должны использовать поставщик данных. Если единственное место, в котором находится состояние ваших данных, находится во временном элементе управления пользовательского интерфейса, то вам необходимо вернуть его обратно в доменные объекты и сериализовать их. Предположительно, каждая строка в сетке данных - это какой-то объект, и в этом случае я бы пересмотрел вашу проблему - как синхронизировать изменения в сетке данных и доменные объекты. Если вы взломаете это, нет необходимости перебирать сетку данных.

Самый простой способ решить проблему с синхронизацией - это наблюдать за событиями ваших редакторов в сетке данных. При изменении содержимого сетки вы автоматически обновляете объект домена.

Какие у вас редакторы в сетке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...