我有一个Kendo UI DataSource,我想通过比较字段来过滤它。 这是我的数据源:
var dataSource = new kendo.data.DataSource({
data: [
{ appointment: "Hairdresser", start: new Date("somedate"), end: new Date("somedate")},
{ appointment: "Meeting", start: new Date("somedate"), end: new Date("somedate")},
{ appointment: "Shopping", start: new Date("somedate"), end: new Date("somedate")}
]
});
我想像这样过滤它:
SELECT * FROM dataSource WHERE start > end;
dataSource.filter({
"field": "start",
"operator": "gt",
"value": ?????
});
如何使用过滤器实现此目的?
答案 0 :(得分:4)
内置过滤可以 。相反,我建议你创建一个按钮,点击它会向服务器发送一些额外的参数,你可以自己执行这样的过滤。
要发送其他字段并执行阅读请求,您可以这样做
dataSource.read({ myCustomFilter:true });
答案 1 :(得分:3)
如果您想要在客户端执行此操作,我建议使用类似lo-dash的filter方法(或者,根据您需要支持的浏览器,只需使用本机Array.filter实施)来实现您的过滤器。
您可以将所有数据存储在外部数组中,并仅将过滤后的数据保存在绑定到UI的数据源中(使用dataSource.data()
进行更新):
var data = [{
name: 'barney',
age: 36,
start: new Date(2011, 1, 1),
end: new Date(2012, 1, 1)
}, {
name: 'fred',
age: 40,
start: new Date(2011, 1, 1),
end: new Date(2010, 1, 1)
}];
var filtered = _.filter(data, function (item) {
return item.start > item.end;
});
dataSource.data(filtered);