2009-11-12 57 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> 
相关问题