我希望为1个advancedDataGrid提供2个数据提供程序:1个正常,第二个用于一个列中的组合框。我想让这个组合框从数据库中的列中获取数据(我已在arrayCollection中使用它)。 我只是不知道如何为每个comboBox(作为自定义组件)每次都不必从数据库中读取数据时为comboBox提供数据。我应该将arrayCollection传递给自定义组件吗?或者在mxml中“内联”?什么是最好的方式?
感谢您的帮助
答案 0 :(得分:0)
你能不能将arrayCollection设置为绑定到每一行的对象的属性?
一行等于一个对象,其属性包含绑定到comboBox的arrayCollection。
答案 1 :(得分:0)
最简单的是
答案 2 :(得分:0)
我假设table1中的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>