</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才能替代原有数据
效果图: