ExtJs3帶條件的分頁查詢的實現

使用ExtJs的同志們必定知道GridPanel哈~神器通常,很是方便的顯示錶格類型的數據,例如神馬用戶列表、產品列表、銷售單列表、XXXX列表等。從數據庫中查詢所需的數據,以列表的形式顯示出來,咱們理應想到對這種數據實現搜索。 
搜索最簡單的方法就是reload那個與GridPanel關聯的store,將搜索結果存進去,可是最初實現的搜索都把原來GridPanel的那個分頁功能給破壞掉了。 

緣由: 
       給store從新載入數據後,PagingToolbar不起做用了,由於ExtJs默認實現的是服務器端分頁,即發送帶有start、limit參數的請求,經過sql語句進行分頁(記得本地分頁也是能夠實現的,待整理)。 
解決方法: 
       利用store的「beforeload」事件和baseParams屬性。beforeload在store載入數據以前觸發,所謂的baseParams,是store每次HTTP請求都會帶上的參數,原本它是一個對象的形式,請求時會轉化爲參數的字符串。 

例子: 
Javascript代碼   收藏代碼
  1. // 明細帳會計區間、時間段、科目,用四個變量存儲查詢條件  
  2. var se_period;  
  3. var se_subject;  
  4. var se_starttime;  
  5. var se_endtime;  
  6. // 存儲明細帳用的JsonStore  
  7. var subsidiaryStore = new Ext.data.JsonStore({  
  8.         fields: ["date", "voucherNo", "explanation", "debit", "credit"],  
  9.         url: 'subsidiaryAction!getSubsidiary.action',  
  10.         totalProperty: 'sum',  
  11.         root: 'subsidiary',  
  12.         listeners: {  
  13.                 "beforeload": function(store) {  
  14.                         store.baseParams = {  
  15.                                 starttime: se_starttime,   
  16.                                 endtime: se_endtime,   
  17.                                 subject: se_subject,   
  18.                                 period: se_period  
  19.                         }  
  20.                 }  
  21.         }  
  22. });  


Javascript代碼   收藏代碼
  1. // 某用於查找的button上實現的載入方法  
  2. buttons: [{  
  3.         text: '載入',  
  4.         handler: function() {  
  5.                 se_period = searchPanel.findById('se_period').getValue();  
  6.                 se_subject = searchPanel.findById('se_subject').getValue();  
  7.                 se_starttime = searchPanel.findById('se_starttime').getValue();  
  8.                 se_endtime = searchPanel.findById('se_endtime').getValue();  
  9.                         subsidiaryStore.load({  
  10.                                 params: {  
  11.                                         start: 0,  
  12.                                         limit: pageSize  
  13.                         }  
  14.                 });  
  15.         }  
  16. }]  
這樣在store載入數據時,就會同時提交查詢條件啦,後臺正常獲取那些參數,進行一下判斷,查詢條件爲空時分頁取全部數據就能夠啦,嗷yeah~
相關文章
相關標籤/搜索