加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex的Datagrid的itemRenderer问题:奇葩的现象!

发布时间:2020-12-15 04:12:13 所属栏目:百科 来源:网络整理
导读:在一个Datagrid里面的一列用itemRenderer做了一个Combobox。代码是前辈的。自己拿过来用。发现只要改其中一列的Combox选项。再去用鼠标点任何一个地方,该Combobox里面的选项就会跳到第一个选项上面去。但是其他页面我用到的地方却不出现这个问题。 百思不得

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


后来发现rendererIsEditor="true"是指渲染来源的。大概的意思是:如果是true,表示渲染来源来源于components.policy.gather.New_nbaauditSelect。效果上显示ComboBox.

如果为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;
	        }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读