Ext中的combobox有屬性typeAhead:true 能夠實現模糊匹配,可是是從開始匹配的,若是須要自定的的匹配,則須要監聽beforequery方法,實現本身的匹配查詢方法:html
var gfxmComb = new Ext.form.ComboBox({ id : 'gfxmComb', store : gfxmStore, typeAhead : true, mode : 'local', editable : true, displayField :'xmMc', valueField :'xmBm', triggerAction : 'all', selectOnFocus : true, listeners : { 'beforequery':function(e){ var combo = e.combo; if(!e.forceAll){ var input = e.query; // 檢索的正則 var regExp = new RegExp(".*" + input + ".*"); // 執行檢索 combo.store.filterBy(function(record,id){ // 獲得每一個record的項目名稱值 var text = record.get(combo.displayField); return regExp.test(text); }); combo.expand(); return false; } } } });
var employee_store = new Ext.data.Store({ proxy:new Ext.data.HttpProxy({url:"../Process/Form_cli_e.ashx"}), reader: new Ext.data.JsonReader({ //remote:true, totalProperty:'totalProperty', root:'root', id:'employee_store' },[ {name: 'ry_name'}, {name: 'ry_gh'} ]) }); function cli_e(){ var cli_e_box = new Ext.form.ComboBox({ mode:'remote', idname:'cli_E', name:'cli_E', displayField:'ry_name', valueField:'ry_gh', store:employee_store, typeAhead:false, triggerAction:'query' }); return cli_e_box; }
1.使用simplestore正常 ;
2.使用遠程數據,設置triggerAction:’all’,正常 ;
3.使用遠程數據,設置triggerAction:’query’,讀不出數據 ;
4.使用遠程數據,設置triggerAction:’query’,在combobox中輸入4個字符可加載到數據,但沒有篩選功能 ;markdown
Ext.form.ComboBox級聯菜單(mode : ‘local[remote]’)url
var dwStore = new Ext.data.JsonStore({ url:"bdzJbqk.html?m=loaddwdata", root:"dwresults", totalProperty:"dwtotalCount", fields:["id","name"] }); dwStore.load(); var bdzStore = new Ext.data.JsonStore({ url:"bdzJbqk.html?m=loadbdzdata", root:"bdzresults", totalProperty:"dwtotalCount", fields:["id","name"] }); var bdzcombo = new Ext.form.ComboBox({ id:'bdz', width:60, listWidth:58, store: bdzStore, value: "所有", valueField :"id", displayField: "name", forceSelection: true, editable: false, triggerAction: 'all', //mode : 'local', allowBlank:true }); var dwcombo = new Ext.form.ComboBox({ width:150, id:'search', store: dwStore, value: '${cdssdw}', valueField :"id", displayField: "name", forceSelection: true, hiddenName:'test', editable: false, triggerAction: 'all', allowBlank:true, emptyText:'請選擇', fieldLabel: '多選下拉ComBo', mode : 'remote', listeners:{ select :function(dwcombo){ bdzStore.load({params:{cdssdw: dwcombo.getValue()}}); } } });