当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,