52,782
社区成员
发帖
与我相关
我的任务
分享CascadeCombo = Ext.extend(Ext.form.ComboBox, {
// valueField : 'id',
// displayField : 'label',
mode : 'local',
emptyText : '请选择',
triggerAction : 'all',
editable:false,
forceSelection:false,
selectOnFocus:true,
typeAhead:true,
initComponent : function() {
this.children = [];
/**
* 调用父类的构造函数(必须)
*/
CascadeCombo.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 : 'root',
totalProperty : 'totalProperty'
}, this.storeFields)
});
},
/**
* 设置默认值,并触发select事件
*/
setDefaultValue : function(v) {
this.setValue(v);
this.fireEvent('select', this);
},
/**
* 向数据源添加request参数
*/
addParams : function(parameters) {
Ext.apply(this.store.baseParams, parameters);
},
/**
* 添加下级级联的下拉框
*/
addChild : function(child) {
this.children.push(child);
},
/**
* 重新加载数据源
*/
reload : function() {
if (this.store) {
this.store.load();
}
if (this.defaultValue) {
this.setDefaultValue(this.defaultValue);
this.defaultValue = null;// 默认值只初始化一次
}
return this;
},
listeners : {
select : function(combo, record, index) {
Ext.each(this.children, function(child) {
child.addParams( {
parent : combo.value
});
child.defaultValue = '请选择';
child.reload();
});
}
}
});
Ext.onReady(function() {
var roleGroup = new CascadeCombo( {
dataUrl : path + '/sys/queryAllRolegroup.pt',
// renderTo : 'sel1',
hiddenName:'rolegroupId',
params : {
id : 'rolegroupId'
},
storeFields : [ {
name : 'rolegroupId'
}, {
name : 'groupName'
}],
valueField : 'rolegroupId',
displayField : 'groupName'
});
var role = new CascadeCombo( {
dataUrl : path + '/sys/findByGroupRole.pt',
// renderTo : 'sel2',
hiddenName:'roleId',
storeFields : [ {
name : 'roleId'
}, {
name : 'roleName'
}],
valueField : 'roleId',
displayField : 'roleName'
});
roleGroup.addChild(role);
roleGroup.reload();
new Ext.Button( {
text : '显示',
renderTo:'sel1',
handler:function(){
var window=new Ext.Window({
title:'测试',
resizable:false,
items:[new Ext.form.FormPanel({
frame : true,
border : false,
labelAlign : 'right',
labelWidth : 60,
defaults : {
xtype : "textfield",
width : 150
},
items:[roleGroup,role]
})]
}).show();
}
});
});