advancedDataGrid с двумя провайдерами - PullRequest
0 голосов
/ 12 ноября 2009

Я хочу иметь 2 поставщика данных для 1 advancedDataGrid: 1 обычный и второй для комбинированного списка в одном из столбцов. Я хочу, чтобы этот комбинированный список имел данные из столбца в базе данных (у меня уже есть это в arrayCollection). Я просто не знаю, как предоставить данные для comboBox таким образом, чтобы ему не приходилось каждый раз считывать эти данные из базы данных для каждого comboBox (как пользовательский компонент). Должен ли я передать arrayCollection в пользовательский компонент? или сделать это «встроенный» в MXML? какой лучший способ?

спасибо за любую помощь

Ответы [ 3 ]

0 голосов
/ 12 ноября 2009

Самый простой -

  • создайте статическое свойство для вашего itemrenderer и передайте данные
  • или поиск данных в элементе поиска через глобальную переменную
0 голосов
/ 12 ноября 2009

Я предполагаю, что field_2 в table1 содержит ключ к строке в таблице 2.

Настройте свою сетку данных для использования table1 в качестве поставщика. Убедитесь, что во втором столбце используется пользовательский рендер со списком

<mx:AdvancedDataGrid dataProvider="{table1}">
   <mx:groupedColumns>
      <mx:AdvancedDataGridColumn headerText="Column 1" dataField="field_1" />
      <mx:AdvancedDataGridColumn headerText="Column 2" dataField="field_2" 
         itemRenderer="{CustomRenderer}"/>
   </mx:groupedColumns>
</mx:AdvancedDataGrid>

Рендерер - это просто холст с комбо-боксом внутри. В выпадающем списке используется копия данных таблицы 2 (просто создайте коллекцию массивов и заполните ее один раз данными из базы данных) в качестве поставщика и используйте данные таблицы 1 для отображения выбранного элемента.

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" dataChange="dataChange()>
   <mx:Script>
      <![CDATA[
         private function dataChange():void
         {
            //Update combobox selected index
            myCombo.selectedIndex(data);
         }
      ]]>
   </mx:Script>

   <mx:ComboBox id="myCombo" dataProvider="{table2_copy}"\>
</mx:Canvas>
0 голосов
/ 12 ноября 2009

Не могли бы вы просто установить arrayCollection как свойство для объекта, который привязан к каждой строке?

Одна строка равняется одному объекту со свойством, содержащим массив arrayCollection, который связан с comboBox.

...