读书人

Ext.form.ComboBox 兑现两个ComboBox

发布时间: 2012-11-19 10:18:51 作者: rapoo

Ext.form.ComboBox 实现两个ComboBox 的相互级联

想实现的功能是这样的:有两个下拉框,既想让第二个下拉框的内容根据第一个下拉框的选择结果load新值,也想让第一个下拉框根据第二个下拉框的选择结果重新load新值

Ext.form.ComboBox 兑现两个ComboBox 的相互级联

Ext.form.ComboBox 兑现两个ComboBox 的相互级联

最终的效果是这样的,我返回数据的时候都返回了一个 * 目的是,当我点 * 的时候 另一个下拉框的内容将全部展示出,因为我想实现互选,比如当我选了用户组后这时候应用组的内容已经变了,这时候我又想先选应用再选用户组,所以我再点一下 * 用户组的值又恢复了,源码如下,后台是python做的

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();//到这,我要的两个数据都有了
        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){//这里实现的是根据我选的值让对应的下拉框值重新loadapp_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_application_group_list_for_ug?user_g='+user_group;app_group_store.load();}            }        }    });var simple = new Ext.FormPanel({        labelWidth:120,        frame:true,        border:0,        bodyStyle:'padding:0px 0px 0px 0px',        labelAlign:"right" ,        width:315,        height:110,        labelSeparator: ' ',        items:[select_user_group,select_appgroups]    });simple.addButton(_("Publish"),function(){        if (simple.getForm().isValid()) {var usergp=select_user_group.getRawValue();var appgp=select_appgroups.getRawValue();if(usergp =='*'){Ext.MessageBox.alert(_('Error'), _('Please select a user group.'));}else if(appgp == '*'){Ext.MessageBox.alert(_('Error'), _('Please select a application group.'));}else{var url="/user/publish_group?user_group="+usergp+"&app_group="+appgp;var ajaxReq=ajaxRequest(url,0,"GET",true);ajaxReq.request({success: function(xhr) {var response=Ext.util.JSON.decode(xhr.responseText);if(response.success){published.store.reload();app_group_store.proxy.conn.url = '/apply/get_application_group_list_for_publish';app_group_store.load();user_group_store.proxy.conn.url = '/apply/get_usergroup_list_for_publish';user_group_store.load();// select_appgroups.store.reload();// select_user_group.store.reload();simple.getForm().reset();// select_appgroups.disable();Ext.MessageBox.alert(_("Success"),response.msg);                }else{                    Ext.MessageBox.alert(_("Failure"),response.msg);                    }                },                failure: function(xhr){                    Ext.MessageBox.alert( _("Failure") , xhr.statusText);                }            });}        }else{            Ext.MessageBox.alert(_('Error'), _('Please select users and appgroups.'));        }    });return simple;//这里返回的就是整个这个框了,用的时候调一下就OK了}


读书人网 >编程

热点推荐