2011-06-22 78 views
0

我正在使用帶有ClientFilter選項的JsonQueryRestStore來緩存查詢和數據, 爲已經發送給客戶端的數據卸載服務器的一些重複的xhr查詢。如何讓Dojo ClientFilter緩存查詢不區分大小寫?

我寫的代碼工作正常,除了一個小問題。 我有一個篩選選擇用戶類型,並獲得可用選項的限制。 這個字段沒有特定的情況,所以輸入「mi」,「MI」,「Mi」,你會得到相同的結果選擇全部大寫。 問題是,即使我使用選項: queryOptions:{ignoreCase:true} 和/或大寫字母:true似乎ClientìFilter忽略並查詢服務器的每個病例組合,因此它緩存每一個作爲不同的一個。 I.e 對於兩個字母,你可以有4種組合:mi,MI,Mi,mI

現在,如果ClientFilter沒有正確處理,我想強制所有輸入大寫。但我無法得到它的工作.. ClientFilter發送和緩存查詢,因爲用戶 鍵入它,即使我嘗試將其轉換。

任何想法如何我可以解決這個問題?

我下面的JavaScript代碼的簡化:

 dojo.require('dojox.data.FilteringSelect'); 
     dojo.require('dojox.data.ClientFilter'); 
     dojo.require('dojox.data.JsonQueryRestStore'); 
     var fooselect = new dijit.form.FilteringSelect({ 
      id : "fooId", 
      store: new dojox.data.JsonQueryRestStore({ target: '/fooajax', labelAttribute: 'description', cacheByDefault: true }), 
      searchAttr : "description", 
      searchDelay : 300, 
      autocomplete : true, 
      uppercase: true, 
      trim : true, 
      required : ${required}, 
      queryOptions: {ignoreCase: true} 
     }, "fooInput"); 

HTML:

<input id="fooInput"> 

回答

0

在queryOptions可以添加緩存鍵與真正的價值,像這樣。

queryOptions="{cache: true,ignoreCase: true}" 

請讓我們知道它是否工作。 Ref。 URL。 http://mikoskay.net/158-client-side-sorting-with-jsonreststore.html

+0

是否與cacheByDefault不同:在商店創建過程中傳遞true? 正如你在上面看到的那樣,我使用了這個選項。它緩存查詢,但是它與案例一起緩存,因此即使數據已經在第一個數據庫上已經在cliet上,MI mi也會在服務器上執行。 – Massimo

+0

你可以嘗試給予ignoreCase:true爲FilteringSelect而不是JsonQueryRestStore – rajkamal

+0

甚至沒有ignoreCase:true FilteringSelect沒有正確緩存。對大寫字母小寫字母繼續做出區分,並重複查詢到服務器 – Massimo