我有一個ext.form.Combobox對象,由ext.data.JsonStore動態填充。用戶可以鍵入一個搜索鍵來過濾列表並選擇其中一個過濾器選項。我希望下拉菜單中的一個可點擊的選項爲「全部」。我怎樣才能使這個選項總是顯示在動態組合框列表中?它現在設置的方式,只有當用戶在搜索字段中輸入「a..l..l ..」時才顯示。「全部搜索」選項在Javascript Combobox
是否有一個搜索字詞可以應用到它是一個通配符,所以無論搜索字詞是什麼都會出現?
感謝
我有一個ext.form.Combobox對象,由ext.data.JsonStore動態填充。用戶可以鍵入一個搜索鍵來過濾列表並選擇其中一個過濾器選項。我希望下拉菜單中的一個可點擊的選項爲「全部」。我怎樣才能使這個選項總是顯示在動態組合框列表中?它現在設置的方式,只有當用戶在搜索字段中輸入「a..l..l ..」時才顯示。「全部搜索」選項在Javascript Combobox
是否有一個搜索字詞可以應用到它是一個通配符,所以無論搜索字詞是什麼都會出現?
感謝
我結束了beforeQuery屬性設置爲改變爲「搜索的搜索字符串值的函數所有「選項,無論當前的查詢是什麼。
喜歡的東西..
combobox.on('beforeQuery', function(q) {
searchStore.getAt(searchStore.getCount()-1).data.search_string = q.query
}
這適用於我的代碼,因爲搜索所有選項是最後一個加入搜索商店。否則,您需要以另一種方式訪問「搜索全部」記錄。
我平時工作解決這個問題的方法是通過組合的emptyText
配置選項設置爲'All'
。這樣,當組合框沒有設置任何值(當它被提交給服務器時它也會提交一個空值),你可以假設用戶不想過濾這個字段。
通過一些Ext3的源代碼,一個漂亮的方式得到你想要將覆蓋上Ext.data.Store
的filterBy
功能,並截取功能,讓「全部」記錄通過功能的展望:
Ext.ux.AllJsonStore = Ext.extend(Ext.data.JsonStore, {
filterBy: function(fn, scope) {
var allFn = Ext.util.Functions.createInterceptor(fn, function(record, id) {
if (record.data.display == "All") {
return true;
}
});
return Ext.ux.AllJsonStore.superclass.filterBy.call(this, allFn, scope);
}
});
那麼無論你創建你的Ext.form.ComboBox
店,使用此店來代替:
var combo = new Ext.form.ComboBox({
...
store: new Ext.ux.AllJsonStore({...})
...
});