EXTJS中,下拉框绑定事件,动态赋值

在开发过程中,有时会遇到一咱情况:

两个下拉框A和B,当选择A时,根据A的值查询B可以选择的值并赋值到B中。举个常见的例子,省份与城市两个下拉框,当选择省份后,城市的下拉框中只显示该省的城市。

要实现该功能最重要的就是一个下拉框的绑定事件而已。下边我以单位和员工关系为例。

有两个下拉框单位和员工,如图:


此时的员工下拉框为空,当选择单位以后,查询出该单位的员工列表并赋值到员工下拉框中,如图:


看完功能以后,我们现在来看看代码上是怎么实现的。

首先,定义一个单位下拉框:

var infoOfficesCombo = new Ext.form.ComboBox({
	 fieldLabel:'单位',
     store: infoOfficesStore,	//infoOfficesStore 可以是从数据库中查出,也可以是自己定义。
     mode:'local',
     triggerAction:'all',
     valueField:'chr_id',
     displayField:'chr_name',
     value:'',
     listeners: {	//监听事件
		select:function(){
		   infoUserStore.removeAll();	//将员工的store里边的内容清空
		   infoUserCombo.setValue('');	//将员工下拉框置为空
		   var userURL = path + "/search/getUserByOrgId.action?org_id=" + this.value;
           infoUserStore.proxy = new Ext.data.HttpProxy({url:userURL, method:'get'});
           infoUserStore.load();
		}
	 },
     editable:false
});

上边的userURL是我查询员工的地址,this.value可以当前下拉框选择的值(valueField定义的值,而不是显示的值:displayField)。

接下来我们要定义一个员工的下拉框:

//员工store
var infoUserData = {'totalCount':1,'rows':[{'name':'请先选择单位','sn':''}]}
infoUserStore = new Ext.data.JsonStore({
	root:"rows", 
	totalProperty:"totalCount", 
	fields:['sn','name'],
	data:infoUserData
});
//员工组件
var infoUserCombo = new Ext.form.ComboBox({
	 id: 'infoUserCombo',
	 fieldLabel:'员工',
     store: infoUserStore,
     mode:'local',
     triggerAction:'all',
     valueField:'id',
     displayField:'name',
     value:'',
     editable:false
});

定义员工下拉框需要主意以下几点:

1. infoUserStore(员工store)需要在文件首声明,这样才能在单位下拉框的监听事件中重新赋值。

2. infoUserStore(员工store)必要声明为Ext.data.JsonStore类型,而不能使用Ext.data.SimpleStore类型,否则在监听事件中无法将查询的结果赋值给它。所以infoUserData也要写成json形式。


这样就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值