2

我有一个 Kendo UI 数据源,我想通过比较字段来过滤它。这是我的数据源:

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": ?????
            });

如何使用过滤器实现这一目标?

4

2 回答 2

4

这对于内置过滤器是不可能的相反,我建议您创建一个按钮,单击该按钮会将一些额外的参数发送到服务器,您可以在服务器上自行执行此类过滤。

要发送其他字段并执行读取请求,您可以像这样

dataSource.read({ myCustomFilter:true });
于 2014-03-11T12:16:52.767 回答
3

如果您想在客户端执行此操作,我建议使用类似 lo-dash 的过滤器方法(或者,根据您需要支持的浏览器,只需使用本机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);
于 2014-03-11T14:09:41.733 回答