ComboBox封装

1、调用方式
//部门组合框
var dpCombo = new MyComboBox( {
dataUrl : 'comboServer.jsp',
fieldLabel:'所属部门',
displayField : 'name',
valueField : 'idno',
params : {
type : 'department'//部门,即字段名称
}
});


2、MyComboBox.js

MyComboBox = Ext.extend(Ext.form.ComboBox, {

displayField : this.displayField,
valueField : this.valueField,
width:150,
editable:false,
emptyText : '请选择',// 默认值
mode : 'remote',
triggerAction : 'all',
initComponent : function() {
// 在组件初始化期间调用的代码
this.children = [];
// 调用父类构造函数(必须)
MyComboBox.superclass.initComponent.apply(this, arguments);
// 设置数据源
this.store = new Ext.data.Store( {
baseParams : this.params || {},
proxy : new Ext.data.HttpProxy( {
url : this.dataUrl
}),
reader : new Ext.data.JsonReader( {
root : 'data',
totalProperty : 'totalSize'
}, [ {
name : this.displayField,
mapping : this.displayField
}, {
name : this.valueField,
mapping : this.valueField
}])
});
},
// 设置默认值,并触发Select 事件
setDefaultValue : function(v) {
this.setValue(v);
this.fireEvent('select', this);
},
//向数据源添加request参数
addParam : function(parameters) {
Ext.apply(this.store.baseParams, parameters);
},

listeners : {
select : function(combo, record, index) {
Ext.each(this.children, function(child) {
// child.clearValue();
// 级联的子下拉框会多发送一个&parent=..的参数,后端据此可以做出判断如何加载数据
child.addParam( {
parent : combo.value
});

child.reload();

});
}
},
/**//** 添加下级级联的下拉框 */
addChild : function(child) {
this.children.push(child);
return this;
},
/** 重新加载数据源 */
reload : function() {
if (this.store)
this.store.load();
if (this.defaultValue) {
this.setDefaultValue(this.defaultValue);
this.defaultValue = null; // 默认值,只初始化一次
}
return this;
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值