求助:datagrid内嵌combox窗体变化引起combox选中项清除的问题
问题描述:
在datagrid里有一列嵌入combox,选中了combox后,如果编辑其他单元格、调整单元格宽度或缩放窗口等操作都会是combox选中项失效,刚接触flex还不是很懂,请教各位大神有什么解决办法没有?
代码片段:
<mx:Panel width="560" height="346" layout="absolute" title="修正后的数据">
<mx:DataGrid id="dg2" x="10" y="10" width="532" height="214" editable="true" dataProvider="{arr}"
itemEditEnd="onEditEnd(event)">
<mx:columns>
<mx:DataGridColumn paddingLeft="10" dataField="selected" editable="false"
itemRenderer="renderer.CheckBoxRenderer"/>
<mx:DataGridColumn headerText="Column 1" dataField="Id" />
<mx:DataGridColumn headerText="Column 2" dataField="city" />
<mx:DataGridColumn headerText="Modify" editable="false" dataField="flag">
<mx:itemRenderer>
<mx:Component>
<mx:ComboBox selectedIndex="{outerDocument.goIndex(data.flag)}" labelField="label" dataProvider="{outerDocument.cboxData}" change="data.flag=selectedIndex"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<!--<mx:DataGridColumn dataField="flag" headerText="XBRL" itemRenderer="myCombox" />-->
<mx:DataGridColumn headerText="Column 3" dataField="total"/>
</mx:columns>
</mx:DataGrid>
<mx:Label x="10" y="257" text="Label" width="211" height="30" id="lbl2" fontWeight="bold" color="#F80112"/>
<mx:CheckBox id="cbox" x="10" y="227" label="全 选" change="selectAll()"/>
<mx:Button x="50" y="257" click="coformEdit()" label="修改"/>
</mx:Panel>
datagrid及combox数据源:
[Bindable]
private var arr:ArrayCollection=new ArrayCollection([
{Id:1001,year:2009,city:"Shanghai",provice:"上海",total:580000,selected:false,flag:"a"},
{Id:1002,year:2009,city:"Beijing",provice:"河北省",total:7852020,selected:false,flag:"b"},
{Id:1003,year:2009,city:"Nanjing",provice:"江苏省",total:895145,selected:false,flag:"c"},
{Id:1004,year:2009,city:"Hangzhou",provice:"浙江省",total:4132415,selected:false,flag:"d"},
{Id:1005,year:2009,city:"Shanghai",provice:"上海",total:580000,selected:false,flag:"a"},
{Id:1006,year:2009,city:"Beijing",provice:"河北省",total:7852020,selected:false,flag:"b"},
{Id:1007,year:2009,city:"Nanjing",provice:"江苏省",total:895145,selected:false,flag:"c"},
{Id:1008,year:2009,city:"Hangzhou",provice:"浙江省",total:4132415,selected:false,flag:"c"},
{Id:1009,year:2009,city:"Shanghai",provice:"上海",total:580000,selected:false,flag:"a"},
{Id:1010,year:2009,city:"Beijing",provice:"河北省",total:7852020,selected:false,flag:"b"},
{Id:1012,year:2009,city:"Nanjing",provice:"江苏省",total:895145,selected:false,flag:"c"},
{Id:1013,year:2009,city:"Hangzhou",provice:"浙江省",total:4132415,selected:false,flag:"d"}
]);
[Bindable]
public var cboxData:ArrayCollection=new ArrayCollection([
//{year:2006},
//{year:2007},
//{year:2008},
//{year:2009},
{label:"请选择", data:""},
{label:"2006", data:"a"},
{label:"2007", data:"b"},
{label:"2008", data:"c"},
{label:"2009", data:"d"},
]);
public function goIndex(gender:String):int{
var k:int = 0;
for (var i:int=0;i< cboxData.length;i++) {
if (gender == cboxData[i].data)
k = i;
}
return k;
}