2016-09-02 15 views
0

"Dojo ItemFileReadStoreのソースであるJSONがあり、そのストアがDojo DataGridの基礎となり、bdayGridという名前で、行ごとに2つの属性を持つとします。 」と 『誕生日』の誕生日(すなわち1998年3月14日)YYYY-MM-DD形式で保存されているとしましょう:。Dojoに範囲フィルター/照会を追加する方法ItemFileReadStore

{ 
    "items": [ 
    { "name": "Bob", "birthdate": { "_type": "Date", "_value": "1965-08-20"}, 
    { "name": "Jack", "birthdate": { "_type": "Date", "_value": "1969-11-12"}, 
    { "name": "Will", "birthdate": { "_type": "Date", "_value": "1998-04-20"} 
    ] 
} 

は、日付範囲を定義する記憶されている2つの有効な日付を持っているにも想定します

var beginDate = "1995-01-05"; 
var endDate = "2016-01-01"; 

次に、効果的にtでフィルタリングするItemFileReadStoreでクエリをコーディングする方法ハットの日付範囲?単一の値でフィルタリングするのは簡単です。

bdayGrid.filter({birthday: "1965-08-20"}); 

しかし、範囲内の日付をフィルタリングするために高値/低値のペアを渡すにはどうすればよいですか?カスタムDojoデータストアをコーディングする必要がありますかQueryEngine?もしそうなら、どのように見えるでしょうか?

答えて

0

私はフィルタのメカニズムがこのアプリケーションに適していないと思う。

データに別のブール値フィールド(例:_show)を追加し、そのフィールドのフィルタを適用します。私はストアアイテムをループして、それらが私の日付範囲と一致するかどうかをチェックし、それに応じてブール値フィールドを設定します。

このフィールドを変更するには、ItemFileWriteStoreを使用する必要があると思います。

日付にDateを使用する方が簡単でしょう。

function filter(/*Date*/ startDate, /*Date*/ endDate){ 
    store.fetch({ 
    onItem: function(item){ 
     var date = store.getValue(item, '_value'); 
     store.setValue(item, '_show', (startDate <= date) && (date <= endDate)); 
    })) 
    }); 
} 
関連する問題