2009-11-12 67 views
0

我想爲1個advancedDataGrid有兩個數據提供者:1個正常,第二個爲一列中的組合框。我想要這個組合框有數據庫中的列(我已經在arrayCollection中有)。 我只是不知道如何爲comboBox提供數據,它不必從每個comboBox的每個組合框(作爲自定義組件)讀取數據庫中的數據。我應該將arrayCollection傳遞給自定義組件嗎?或者在mxml中「內聯」?最好的辦法是什麼?advancedDataGrid與兩個提供者

感謝您的幫助

+0

是否所有的組合框(每行)都有相同的數據提供者? – Amarghosh 2009-11-12 15:51:41

+0

是___________ – fazo 2009-11-12 18:01:03

回答

0

最簡單的是

  • 您的itemRenderer創建一個靜態屬性,並傳遞數據
  • ,或者通過一個全局變量查找中的itemRenderer數據
0

你能不只是設置的ArrayCollection作爲屬性被綁定到每一行的對象?

一行等於一個對象,它的屬性包含綁定到comboBox的arrayCollection。

0

我認爲table_2中的field_2包含表2中的一行的鍵。

設置您的datagrid以使用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> 

渲染器只是一個帶有組合框的畫布。組合框使用table2數據的一個副本(只需創建一個數組集合,並使用來自數據庫的數據填充一次)作爲提供者,並使用table1中的數據顯示選定的項目。

<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>