Ext.form.ComboBox 实现两个ComboBox 的相互级联
想实现的功能是这样的:有两个下拉框,既想让第二个下拉框的内容根据第一个下拉框的选择结果load新值,也想让第一个下拉框根据第二个下拉框的选择结果重新load新值
最终的效果是这样的,我返回数据的时候都返回了一个 * 目的是,当我点 * 的时候 另一个下拉框的内容将全部展示出,因为我想实现互选,比如当我选了用户组后这时候应用组的内容已经变了,这时候我又想先选应用再选用户组,所以我再点一下 * 用户组的值又恢复了,源码如下,后台是python做的
[javascript]
function new_publish(published){
var user_group_store=new Ext.data.JsonStore({
url: '/apply/get_usergroup_list_for_publish',//去后台取数据,以字典形式返回的
root: 'rows',
fields: ['name'],
successProperty:'success',
listeners:{
loadexception:function(obj,opts,res,e){
var store_response=Ext.util.JSON.decode(res.responseText);
Ext.MessageBox.alert(_("Error"),store_response.msg);
}
}
});
user_group_store.load();
var app_group_store=new Ext.data.JsonStore({
url: '/apply/get_application_group_list_for_publish',
root: 'rows',
fields: ['appgroup'],
successProperty:'success',
listeners:{
loadexception:function(obj,opts,res,e){
var store_response=Ext.util.JSON.decode(res.responseText);
Ext.MessageBox.alert(_("Error"),store_response.msg);
}
}
});
app_group_store.load();//到这,我要的两个数据都有了
[javascript]
var select_appgroups = new Ext.form.ComboBox({
fieldLabel: _('Select AppGroups'),
allowBlank:false,
store: app_group_store,
emptyText :_("Select AppGroups"),
mode: 'local',
displayField:'appgroup',
valueField:'appgroup',
// value:'*',
width: 140,
triggerAction :'all',
forceSelection: true,
name:'appgroups',
readOnly:true,
editable:false,
// disabled : true,
listeners:{
select:function(combo,record,index){//这里实现的是根据我选的值让对应的下拉框值重新load
app_group = record.get('appgroup');
if(app_group =='*'){//给它一个新的url即可
user_group_store.proxy.conn.url = '/apply/get_usergroup_list_for_publish';
user_group_store.load();
}else{
user_group_store.proxy.conn.url = '/apply/get_user_group_list_for_appg?app_g='+app_group;
user_group_store.load();
}
}
}
});
var select_user_group = new Ext.form.ComboBox({
fieldLabel: _('Select User Group'),
allowBlank:false,
store: user_group_store,
emptyText :_("Select User Group"),
mode: 'local',
displayField:'name',
valueField:'name',
// value:'*',
width: 140,
triggerAction :'all',
forceSelection: true,
readOnly:true,
editable:false,
name:'name',
listeners:{
select:function(combo,record,index){
user_group = record.get('name');
if(user_group =='*'){
app_group_store.proxy.conn.url = '/apply/get_application_group_list_for_publish';
app_group_store.load();
}else{
app_group_store.proxy.conn.url = '/apply/get_applic
补充:web前端 , JavaScript ,