ExtJS ComboBox之 2级联动
Ext.onReady(function () { /*表格数据源绑定*/ var menuStore = Ext.create(‘Ext.data.Store‘, { pageSize:10, fields: [‘id‘,‘‘,‘sm_name‘, ‘sm_url‘, ‘fatherGuid‘,‘fatherName‘], proxy: { type: ‘ajax‘, url: ‘/SystemManage/GetMenuList‘, reader: { type: ‘json‘, root:‘data‘, totalProperty:‘totalCount‘ } }, autoLoad: true }); grid = Ext.create(‘Ext.grid.Panel‘, { store: menuStore, columns: [ { header: ‘菜单名称‘, dataIndex: ‘sm_name‘, flex: 1 }, { header: ‘菜单地址‘, dataIndex: ‘sm_url‘, flex: 1}, { header: ‘父菜单‘, dataIndex: ‘fatherName‘, flex: 1 }, { header: "操作", dataIndex: "button", width: 200, renderer: showbutton, flex: 1 } ], bbar: new Ext.PagingToolbar({ store:menuStore, displayInfo:true, displayMsg:‘当前显示 {0}- {1} 条 / 共 {2}条数据‘, emptyMsg:‘没有数据‘ }), renderTo: "gridHasBtn" }); Ext.define(‘menuList‘, { extend: ‘Ext.data.Model‘, fields: [‘name‘, ‘value‘] }); //The Store contains the AjaxProxy as an inline configuration var comboStore = Ext.create(‘Ext.data.Store‘, { model: ‘menuList‘, proxy: { type: ‘ajax‘, url : ‘/SystemManage/GetComboMenuList?type=<%=Guid.Empty %>‘ }, autoLoad: true }); Ext.define(‘childMenuList‘, { extend: ‘Ext.data.Model‘, fields: [‘name‘, ‘value‘] }); //The Store contains the AjaxProxy as an inline configuration var childComboStore = Ext.create(‘Ext.data.Store‘, { model: ‘childMenuList‘, proxy:{ type: ‘ajax‘, url : ‘/SystemManage/GetComboMenuList‘ }, reader: { type: ‘json‘ }, autoLoad: false }); Ext.create(‘Ext.form.Panel‘, { title: ‘菜单编辑‘, id:‘editMenuForm‘, bodyPadding: 5, // The form will submit an AJAX request to this URL when submitted url: ‘/SystemManage/SaveMenuForm‘, method: ‘POST‘, // Fields will be arranged vertically, stretched to full width layout: ‘anchor‘, defaults: { anchor: ‘100%‘ }, // The fields defaultType: ‘textfield‘, items: [{ name: ‘menuGuid‘, id:‘menuGuid‘, xtype:‘hiddenfield‘ },{ fieldLabel: ‘菜单名称‘, name: ‘menuName‘, id:‘menuName‘, allowBlank: false }, { fieldLabel: ‘菜单地址‘, id:‘menuUrl‘, name: ‘menuUrl‘, // allowBlank: false }, { id: ‘remark1‘, name: ‘remark1‘, fieldLabel: ‘排序ASC‘, allowBlank: false },{ id:‘menuList‘, name: ‘menuList‘, xtype: ‘combo‘, allowBlank: false, fieldLabel: ‘父菜单‘, labelSeparator: ‘:‘, multiSelect: false, valueField: ‘sm_guid‘, //‘dictdataCode‘, displayField: ‘sm_name‘, //‘dictdataName‘, store: comboStore, //typeAhead : true, mode: ‘local‘, // default: remote triggerAction: ‘all‘, emptyText: ‘请选择父菜单‘, readOnly: false, editable : false, selectOnFocus :true, anchor: ‘50%‘, listeners: { change:function(combo,record,index){ Ext.getCmp(‘childMenuList‘).reset(); childComboStore.load({ params: {type:Ext.getCmp("menuList").value}, callback: function(records, options, success){ if(records.length>0&&records[0].data.fatherGuid!=‘<%=Guid.Empty %>‘) Ext.getCmp("childMenuList").setHidden(false); else{ Ext.getCmp("childMenuList").setHidden(true); } }, scope: this }); } } }, { id:‘childMenuList‘, name: ‘childMenuList‘, fieldLabel: ‘子菜单‘, hidden:true, labelStyle:‘color:white;‘, xtype: ‘combo‘, allowBlank: true, labelSeparator: ‘:‘, multiSelect: false, valueField: ‘sm_guid‘, //‘dictdataCode‘, displayField: ‘sm_name‘, //‘dictdataName‘, store: childComboStore, mode: ‘local‘, // default: remote queryMode: ‘local‘, //可以阻止第一次展开combo 的查询事件 triggerAction: ‘all‘, emptyText: ‘请选择子菜单‘, anchor: ‘50%‘, readOnly: false, editable : false },{ id: ‘remark2‘, name: ‘remark2‘, fieldLabel: ‘最高管理员可见‘, anchor: ‘40%‘, allowBlank: false }], buttonAlign:"left", buttons: [{ text: ‘新增‘, id:"btnSumbit", formBind: true, //only enabled once the form is valid disabled: true, handler: function () { var form = this.up(‘form‘).getForm(); if (form.isValid()) { form.submit({ success: function (form, action) { Ext.Msg.alert(‘提示‘,‘操作成功!‘); menuStore.reload(); }, failure: function (form, action) { Ext.Msg.alert(‘提示‘, ‘操作失败!‘ + action.result.message); ReturnFailJsonResult(action.result); } }); } } },{ text: ‘重置‘, handler: function () { this.up(‘form‘).getForm().reset(); Ext.getCmp(‘btnSumbit‘).setText("新增"); } }], renderTo: "gridForm" }); });
关键点: 属性 queryMode: ‘local‘, 默认的comboBox第一次展开会触发服务器查询,该属性 是本地缓存 不会去服务器拿
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。