“假设您有一个JSON,它是Dojo ItemFileReadStore的源,该存储库位于一个名为bdayGrid的Dojo DataGrid下面,并且它每一行都有两个属性,"name”和“生日”。
{
"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上的查询进行编码,从而有效地在该日期范围内进行筛选?通过单个值进行筛选似乎很容易;您可以编写如下代码:
bdayGrid.filter({birthday: "1965-08-20"});但是,如何传递一个高/低值对,以用于筛选范围内的日期?您必须编写自定义Dojo DataStore QueryEngine吗?如果是的话,那会是什么样子呢?
发布于 2016-09-16 08:03:21
我认为过滤机制不适合这个应用程序。
我将在该字段的数据和筛选器中添加另一个布尔字段(例如_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));
}))
});
}https://stackoverflow.com/questions/39295861
复制相似问题