2016-09-02 59 views
0

「假設您有一個JSON,它是Dojo ItemFileReadStore的源代碼,該存儲器位於Dojo DataGrid的下面,名爲bdayGrid,並且每行具有兩個屬性」name 「和‘生日’比方說,生日都存儲在YYYY-MM-DD格式(即1998年3月14日):如何將範圍過濾器/查詢添加到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"} 
    ] 
} 

假設你也有儲存了兩個有效的日期定義的日期範圍:

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

那麼如何在ItemFileReadStore上編碼查詢,這將有效地過濾t帽子日期範圍?用單個值過濾似乎很容易;你的代碼是這樣的:

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

但是,如何在高/低值對傳遞給被用來過濾範圍內的日期?您是否需要編寫定製的Dojo DataStore 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)); 
    })) 
    }); 
} 
相關問題