Использование одного источника данных для нескольких сетей данных в Flex3 - PullRequest
2 голосов
/ 25 февраля 2010

Я хочу использовать один источник данных (например, массив) для нескольких сетей данных, к которым прикреплены разные функции фильтра и показаны разные столбцы.Во-первых, я подумал, что использую очень прямолинейное приложение:

  • создайте Array
  • , создайте ArrayCollection для каждой DataGrid и установите для свойства "source" значение Array
  • создайте DataGrids и установите для их свойства dataProvider назначенное ему значение ArrayCollection

Так что теперь.каждая ArrayCollection может иметь свою собственную функцию filterFunction, состояние сортировки и т. д., но необходим только один массив со всеми данными в памяти.

Теперь до такой степени, что меня полностью смутило: новые элементы добавляются в массивКонечно, события не отправляются, и мне нужно вручную вызывать itemUpdated для каждой из ArrayCollections.Во время отладки в коде, чтобы получить более глубокое понимание Flex, я попытался выяснить, что делает этот загадочный метод itemUpdated, особенно, как отмечается в документации Adobe, если не задано «свойство» (например,это null), произойдет простое «refresh ()».Я не нашел никаких вызовов «refresh ()» во всей отладке (и я углубился в фреймворк как можно глубже (кстати: много забавных комментариев прямо в коде :-))).Единственное, что я смог найти, - это отправить CollectionChangeEvent с помощью PropertyChangeEvent в свойстве item.Который был типа «ОБНОВЛЕНИЕ» (а не, как я ожидал бы, «ДОБАВИТЬ»).При попытке отправить это событие вручную, оно никогда не работало (например, сетка данных не обновлялась).Я знаю, что на данный момент я должен придерживаться itemUpdated, но, поскольку поставщик данных может стать большим (в обоих измерениях), производительность действительно беспокоит меня, и я не понимаю, что происходит под капотом.

И какОжидается, никакой помощи от Adobe: - (

Так что большое спасибо всем, кто прочитал весь этот текст. И еще больше СПАСИБО всем, кто отвечает и дает мне подсказки, как я могу выйти изпутаница и понимание (если это вообще возможно) Fles немного лучше.

самое прекрасное из всех,

herbert

1 Ответ

1 голос
/ 25 февраля 2010

Вы должны вызвать ArrayCollection.refresh () для каждого из ваших dataProviders, чтобы получить dataGrids для отображения новых изменений в исходном массиве.

...