求助:datagrid内嵌combox窗体变化引起combox选中项清除的问题

jadson 2013-09-03 10:49:36
问题描述:

在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;
}


...全文
178 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jadson 2013-09-03
  • 打赏
  • 举报
回复
谢谢,你提到的那帖子里用的是checkbox,我这边用的而是combox,其来源是从数据库里获取的,datagrid中的combox列是可以重新选取的,基于以上场景你的解决办法是否还可行呢?
xuefeimengli2007 2013-09-03
  • 打赏
  • 举报
回复
我在另一个人的帖子里 提到了 http://bbs.csdn.net/topics/380232785 回复 在6楼 #6
jadson 2013-09-03
  • 打赏
  • 举报
回复
非常感谢,问题解决了。借鉴了你的思路,我用selectedIndex,在查询的每条数据上设置一个与combox数据源下标对应的索引字段。
xuefeimengli2007 2013-09-03
  • 打赏
  • 举报
回复
例如说,combox1,对应的变量是 selectedVO1 设置combox1组件的selected属性值迷为 @{selectedVO1} 如:<combox selectedItem=@{selectedVO1}/> 示例为简写
xuefeimengli2007 2013-09-03
  • 打赏
  • 举报
回复
道理一样,使用 数据绑定 ,将组件的selected值绑定到一个变量

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧