在這邊將提到如何設定自動載入ComboBox的資料,省掉當您點選下拉時向後端撈取資料
庫的時間,可以想像的是假如你的下拉有近千筆的資料,此時將省下一些時間。
ComboBox需搭配Store,透過它您可以決定raw data要組成的格式,從檔案或者是後端來
得到資料。Ext.data.Store有一config設定autoLoad ,當您設定為true時,此時在頁面剛載入
時,就會觸發store去做後端資料的查詢,載入相關資料!
當您此時點擊下拉選項時,必須設定mode為'local',預設為remote,若沒有更改這裡的設定
將會再次觸發store去後端撈取資料。
片段程式碼如下:
autoLoad with local的搭配,由於資料已預先載入,因此當點擊下拉時直接顯示下拉內容
由於在這邊測試的下拉資料有將近5000筆,因此wait icon會有近1~2秒的等待時間。哪種方
式較適合,大家可以依當下的情況做判斷來使用。
庫的時間,可以想像的是假如你的下拉有近千筆的資料,此時將省下一些時間。
ComboBox需搭配Store,透過它您可以決定raw data要組成的格式,從檔案或者是後端來
得到資料。Ext.data.Store有一config設定autoLoad ,當您設定為true時,此時在頁面剛載入
時,就會觸發store去做後端資料的查詢,載入相關資料!
當您此時點擊下拉選項時,必須設定mode為'local',預設為remote,若沒有更改這裡的設定
將會再次觸發store去後端撈取資料。
片段程式碼如下:
var payernoStore = new Ext.data.Store({
autoLoad: true,
// load using HTTP
url: "<%=request.getContextPath()%>/ActionServlet?action=composeComboBoxMuchData",
// 此讀取器可以解析JSON DATA, 並轉換成Record. Record需定義其欄位名稱與型別
reader: new Ext.data.JsonReader({
root: 'rows',
totalProperty: 'totalRows',
fields: payernoColumns
})
});
var payernoCombo = new Ext.form.ComboBox({
valueField: 'code_no',
mode : 'local',
displayName: 'payer dataes',
allowBlank: true,
typeAhead: false,
triggerAction: 'all',
transform:'payerno',
forceSelection:true,
resizable:true,
width:100,
listWidth:250,
minChars:0,
lazyRender:false,
store: payernoStore,
displayField: 'code_na',
selectOnFocus:false
});
autoLoad with local的搭配,由於資料已預先載入,因此當點擊下拉時直接顯示下拉內容
autoLoad with local
no autoLoad with remote的搭配,當點擊下拉時先顯示wait icon,再顯示下拉內容
no autoLoad with remote
由於在這邊測試的下拉資料有將近5000筆,因此wait icon會有近1~2秒的等待時間。哪種方
式較適合,大家可以依當下的情況做判斷來使用。
留言
張貼留言