ExtJS 3.4.0 - ComboBox auto load with local mode

在這邊將提到如何設定自動載入ComboBox的資料,省掉當您點選下拉時向後端撈取資料

庫的時間,可以想像的是假如你的下拉有近千筆的資料,此時將省下一些時間。

ComboBox需搭配Store,透過它您可以決定raw data要組成的格式,從檔案或者是後端來

得到資料。Ext.data.Store有一config設定autoLoad ,當您設定為true時,此時在頁面剛載入

時,就會觸發store去做後端資料的查詢,載入相關資料!

當您此時點擊下拉選項時,必須設定mode為'local',預設為remote,若沒有更改這裡的設定

將會再次觸發store去後端撈取資料。

片段程式碼如下:
  1. var payernoStore = new Ext.data.Store({
  2. autoLoad: true,
  3. // load using HTTP
  4. url: "<%=request.getContextPath()%>/ActionServlet?action=composeComboBoxMuchData",
  5. // 此讀取器可以解析JSON DATA, 並轉換成Record. Record需定義其欄位名稱與型別
  6. reader: new Ext.data.JsonReader({
  7. root: 'rows',
  8. totalProperty: 'totalRows',
  9. fields: payernoColumns
  10. })
  11. });
  12. var payernoCombo = new Ext.form.ComboBox({
  13. valueField: 'code_no',
  14. mode : 'local',
  15. displayName: 'payer dataes',
  16. allowBlank: true,
  17. typeAhead: false,
  18. triggerAction: 'all',
  19. transform:'payerno',
  20. forceSelection:true,
  21. resizable:true,
  22. width:100,
  23. listWidth:250,
  24. minChars:0,
  25. lazyRender:false,
  26. store: payernoStore,
  27. displayField: 'code_na',
  28. selectOnFocus:false
  29. });

autoLoad with local的搭配,由於資料已預先載入,因此當點擊下拉時直接顯示下拉內容
autoLoad with local

no autoLoad with remote的搭配,當點擊下拉時先顯示wait icon,再顯示下拉內容

no autoLoad with remote

由於在這邊測試的下拉資料有將近5000筆,因此wait icon會有近1~2秒的等待時間。哪種方

式較適合,大家可以依當下的情況做判斷來使用。

留言