通过比较字段来进行Kendo UI数据源过滤

时间:2014-03-11 08:40:41

标签: filter kendo-ui kendo-datasource

我有一个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": ?????
            });

如何使用过滤器实现此目的?

2 个答案:

答案 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);