ExtJs 动态改变combo显示数据

</pre>    <span style="font-size:18px">     <span style="font-family:Microsoft YaHei">刚实习半年,之前一直在做Android,现在搞了近两个月的前端,用的是Ext的框架,感觉还不错,因为是企业内部使用,所以显示的效果不追求多华丽,能看就行。</span></span><p></p><p><span style="font-size:18px"><span style="font-family:Microsoft YaHei">       现在做的是一个能手动增加节点和叶子的树,很简单,但是添加时却必须分成两部分<img src="" alt="" />:</span></span></p><p><span style="font-size:18px"><span style="font-family:Microsoft YaHei"><img src="https://img-blog.csdn.net/20150120132316750" alt="" /></span></span></p><p><span style="font-size:18px"><span style="font-family:Microsoft YaHei">如图,即点击遥信和遥测显示各自不同节点和叶子,当然,现在要说的是新增:</span></span></p><p><span style="font-size:18px"><span style="font-family:Microsoft YaHei"><img src="https://img-blog.csdn.net/20150120132340296" alt="" /></span></span></p><p><span style="font-size:18px"><span style="font-family:Microsoft YaHei"><img src="" alt="" /></span></span></p><p><span style="font-size:18px"><span style="font-family:Microsoft YaHei">如图:类型是有3个数据的下拉框combo,代码如下</span></span></p><p><span style="font-size:18px"><span style="font-family:Microsoft YaHei"></span></span></p><pre name="code" class="html">                                                        xtype : "combo",
							fieldLabel : "类型",
							name : "_MONITOR_TYPE",
							displayField : "text",
							valueField : "value",
							mode : "local",
							triggerAction : "all",
							editable : false,
							allowBlank : false,
							anchor : "95%",
							store :  new Ext.data.SimpleStore({
				fields : [ "value", "text" ],
				data : [[ "NODE", "分类节点" ],[ "D","遥信" ],["A","遥测"]],
				autoLoad : true,
				pruneModifiedRecords :true
			});
现在这三个数据要根据遥信和遥测两个选项的点击之后分为:分类节点、遥信与分类节点、遥测。

解决思路:要根据点击这两个选项之后传递的参数“A”和“D”来进行判断,然后修改data内的数据。

尝试1:在combo内直接修改data:

<pre name="code" class="html">data : [[ "NODE", "分类节点" ],mType == "D" ?[ "D","遥信" ]:["A","遥测"]],

 结果失败:data数据已经绑定,参数mType不会被外界所改变,判断自然失败。 

尝试2:在外部定义store数据源,判断后重写数据源:

var pDate = new Ext.data.SimpleStore({
				fields : [ "value", "text" ],
				data : [[ "NODE", "分类节点" ],[ "D","遥信" ]],
				autoLoad : true,
				pruneModifiedRecords :true
			});

store : pDate

 if(mType == "A"){
            	   pDate = new Ext.data.SimpleStore({
          				fields : [ "value", "text" ],
          				data : [[ "NODE", "分类节点" ],[ "A","遥测" ]],
          				autoLoad : true,
          			});
                  }else{
                	   pDate = new Ext.data.SimpleStore({
              				fields : [ "value", "text" ],
              				data : [[ "NODE", "分类节点" ],[ "D","遥信" ]],
              				autoLoad : true,
              			});
                  }

这个不知道是store缓存问题还是其他原因,总之也失败了。

然后不甘心的查了查API文档,还真找到了解决方案:



接下来只要在方案2的基础上修改一下就行了:

 if(mType == "A"){
		pDate.loadData([[ "NODE", "分类节点" ],[ "A","遥测" ]],false);
               }else{
            	pDate.loadData([[ "NODE", "分类节点" ],[ "D","遥信" ]],false);
               }
注意:loadData方法第二个参数设为false才能替代原有数据


效果图:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值