2011-06-22 4 views
0

私は、クエリとデータをキャッシュするためにClientFilterオプション付きのJsonQueryRestStoreを使用しています。 は、クライアントにすでに送信されているデータに対して、いくつかの繰り返しxhr質問のサーバをアンロードします。Dojo ClientFilterキャッシュは、大文字と小文字を区別しない問合せを取得する方法を教えてください。

マイナーな問題を除いて、私が書いたコードはうまく動作します。 私はフィルタリングを選択して、ユーザーが入力して利用可能な選択を制限する場所を選択します。 このフィールドには特定のケースがないので、「mi」、「MI」、「Mi」と入力すると同じ結果がすべて大文字になります。 フィールドに「 queryOptions:{ignoreCase:true} および/または大文字:trueのオプションを使用しても、ClientIFilterが無視してすべての大文字と小文字の組み合わせについてサーバーに照会するように見えるため、異なるものとして。 2文字の場合、mi、MI、Mi、mIの組み合わせを使用できます。しかし、私はそれを動作させることはできません.. 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:queryOptionsで

<input id="fooInput"> 

答えて

0

あなたはこのように、真の値を持つキャッシュキーを追加することができます。

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に設定すると、JsonQueryRestStoreの代わりにFilteringSelectがtrueになります。 – rajkamal

+0

ignoreCaseを指定してもtrue:FilteringSelectが正しくキャッシュされません。大文字小文字の違いが引き続き発生し、サーバーにクエリを繰り返す – Massimo

関連する問題