extjs combox联动

开发中遇到了这样的问题

有2个combox组件,当组件一选择完数据后,组件2根据组件1的value从后台查找数据并返回给组件2

遇到的问题:刚开始做的时候思路,给组件1添加select事件,当select的时候将组件2的store.reload({params:{canshu:canshu}})

但这样做完全是错误的,可能是对EXTJS了解不深,这种方法只能让组件2刷新一次,也就是第一次触发组件1的select的时候,以后再触发组件1的select事件都不会刷新组件2,所以最终放弃了上面的做法。

解决办法:当组件1select的时候,直接用ajax访问后台,返回数据,然后通过组件2的store.loadData()来直接加载json数据,OK一切解决了,不过注意在后台返回的数据是文字格式,必须要转化成JSON对象才能成功的 loadData();



实例:

//Combo1

var _Proxy = new Ext.data.HttpProxy({url:path});

var _Reader = new Ext.data.JsonReader({},
[
{name:'CengJi',type:'string',mapping:'cengJi'},
{name:'displayCengJi',type:'string',mapping:'displayCengJi'}
]);

var _Store = new Ext.data.Store({
proxy:_Proxy,
reader:_Reader
});

var ComBo1 = new Ext.form.ComboBox({

height:100,
width:200,
name:name,
fieldLabel:fieldlabel,
editable:false,
triggerAction:'all',//指定查询格式'ALL','QUERY'
mode:'romote',
store:_Store,
displayField:'displayCengJi',
valueField:'CengJi'
});

//主要的工作都是通过select事件完成的

ComBo1 .on('select',function(combo,record,index){

var DeptJiBie = combo.getValue();
var Store = combo2.getStore();
SupperDept.clearValue();

Ext.Ajax.request({
url:'../../GetSupperDept.do',
params:{DeptJiBie:DeptJiBie},
method:'post',
success:function(response) {
var Data = response.responseText;

//注意response.responseText是文本格式,必须要调用Ext.util.JSON.decode()方法转换成 json对象
Store.loadData(Ext.util.JSON.decode(Data));
//Ext.Msg.alert('消息提示',Data);

},
failure:function(response) {
Ext.Msg.alert('消息提示','我擦,访问不了!');
}
});

});



//combo2

var _Proxy = new Ext.data.MemoryProxy([]);

var _Reader = new Ext.data.JsonReader({},
[
{name:'deptname',type:'string',mapping:'deptname'},
{name:'tid',type:'string',mapping:'tid'}
]);

var _Store = new Ext.data.Store({
proxy:_Proxy,
reader:_Reader

});

var ComBo2 = new Ext.form.ComboBox({

height:100,
width:200,
name:name,
fieldLabel:fieldlabel,
editable:false,
triggerAction:'all',//指定查询格式'ALL','QUERY'
mode:'local',
store:_Store,
displayField:'deptname',
valueField:'tid'
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值