flex的Datagrid的itemRenderer问题:奇葩的现象!
在一个Datagrid里面的一列用itemRenderer做了一个Combobox。代码是前辈的。自己拿过来用。发现只要改其中一列的Combox选项。再去用鼠标点任何一个地方,该Combobox里面的选项就会跳到第一个选项上面去。但是其他页面我用到的地方却不出现这个问题。 百思不得其解! 唯一不同的地方就是数据源。虽然都是ArrayCollection,但是里面装的对象不同。导致datafield的字段不同。但是我也方法里面照着写了的。 部分代码如下: <mx:DataGrid id="gd_ipaccount" editable="true" dataProvider="{accountips}" x="0" y="32" width="100%" height="100%"> <mx:columns> <mx:DataGridColumn editable="true" headerText="信任IP" dataField="trust_ipaddr"/> <mx:DataGridColumn editable="true" headerText="账号" dataField="app_account"/> <mx:DataGridColumn itemRenderer="components.policy.gather.New_nbaauditSelect" rendererIsEditor="true" headerText="审计选项" dataField="viewfield"/> </mx:columns> </mx:DataGrid> ? components.policy.gather.New_nbaauditSelect部分源代码: override public function get data():Object { if(_data!=null) { if(this.selectedItem!=null) { if(_data.hasOwnProperty("viewfield")) { _data.viewfield = this.selectedItem.data; } if(_data.hasOwnProperty("audit_type")){ if(this.selectedItem == auditselect[0]) { _data.audit_type = 0; }else if(this.selectedItem == auditselect[1]){ _data.audit_type = 1; }else if(this.selectedItem == auditselect[2]){ _data.audit_type = 2; } } } } return _data; }
如果为false,表示结果来源于Datagrid,效果上就是显示viewfield的值。(注:我之前用的是一个int类型的字段)。我把rendererlsEditor设为false。发现先前int类型的值改变后。combobox的set data() 方法运行成功。我怀疑是我的get data() 方法没有起作用。 抱着试试的态度我吧他改成了String类型。结果就成功了。而且我set data() 方法audit_type字段设置成功。 override public function get data():Object { if(_data!=null) { if(this.selectedItem!=null) { if(_data.hasOwnProperty("viewfield")) { _data.viewfield = this.selectedItem.data; } if(_data.hasOwnProperty("audit_type")){ if(this.selectedItem == auditselect[0]) { _data.audit_type = 0; }else if(this.selectedItem == auditselect[1]){ _data.audit_type = 1; }else if(this.selectedItem == auditselect[2]){ _data.audit_type = 2; } } } } return _data; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |