Flex - вкладка Просмотр нескольких DataGrids и одного и того же dataProvider - PullRequest
0 голосов
/ 26 мая 2010

У меня есть гибкое приложение, в котором у меня есть TabNavigator с несколькими вкладками и сеткой данных на каждой из этих вкладок. Я привязал один массив данных к каждой сетке.

Что я хочу сделать, это связать каждую сетку с определенным набором данных в этом массиве, то есть распределить содержимое массива по сеткам на основе типа данных. Например, элементы, начинающиеся с буквы A, могут отображаться в первой сетке, B во второй, начиная с C в третьей и так далее. Следовательно, можно сказать, что в алфавитном порядке данные распределяются по разным сеткам. Проблема в том, что данные будут добавлены пользователем случайным образом.

Создать один массив данных для каждой сетки не представляется возможным (из-за конструктивных ограничений).

Есть предложения, пожалуйста?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 07 августа 2010

Чтобы сделать это с одной DataGrid и одним списком, используйте функцию фильтрации в списке, которая изменяется в зависимости от активации вкладки (для одной части списка). Простой (хотя и неуклюжий) способ использования единой DataGrid - просто наложить DataGrid на ваш TabNavigator. Это легко сделать с контейнером типа Canvas, используя абсолютный макет:

<mx:TabNavigator x="120.7" y="127.35" width="496" height="276">
    <mx:Canvas label="Test" width="100%" height="100%">
    </mx:Canvas>
    <mx:Canvas label="Test2" width="100%" height="100%">
    </mx:Canvas>
</mx:TabNavigator>

<mx:DataGrid x="305" y="169">
    <mx:columns>
        <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
        <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
        <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
    </mx:columns>
</mx:DataGrid>

Пока DataGrid указан в списке после , TabNavigator в mxml будет отображаться сверху. Конечно, вы должны позаботиться о том, чтобы на каждой вкладке оставалось место соответствующего размера для сетки данных и так далее. Есть и другие способы сделать это, но это, вероятно, самый простой и, возможно, самый безопасный способ - при условии, что вы хотите, чтобы DataGrid отображался на всех вкладках.

Но если это так, вы также можете рассмотреть возможность уменьшения размера TabNavigator до размера «вещи», который должен изменяться при изменении вкладки, оставляя DataGrid в том же контейнере более высокого уровня, что и TabNavigator, но не перекрывая его.

Если вам нужна DataGrid, видимая только на определенных вкладках, но не на других, вы также можете использовать actionscript для вызова addChild / removeChild для контейнеров вкладок. Это прекрасно работает, и документация по removeChild даже предполагает, что это типичное использование:

Удаляет дочерний объект DisplayObject из дочерний список этого Контейнера. У удаленного ребенка будет родитель свойство установлено в нуль. Ребенок будет все еще существуют, если явно уничтожены. Если вы добавите его в другой контейнер, он сохранит свой последний известное состояние.

0 голосов
/ 26 мая 2010

Вы, вероятно, ищете фильтры, эта статья поможет вам понять идею фильтров.

В принципе, как я понимаю, есть функция, которая будет передавать каждый элемент, и она будет проверять условия для этого элемента и возвращает true, если он проходит (вы хотите, чтобы он был включен), или false, если не «т.

Вам потребуется создать разные функции фильтра для разных сеток.

Надеюсь, это поможет, если вам нужна дополнительная помощь, просто дайте мне знать.

...