Filter 通过比较字段筛选Kendo UI数据源

Filter 通过比较字段筛选Kendo UI数据源,filter,kendo-ui,kendo-datasource,Filter,Kendo Ui,Kendo Datasource,我有一个剑道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

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

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

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

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

dataSource.read({ myCustomFilter:true });

如果您想在客户端执行此操作,我建议使用类似lo dash的方法(或者,根据您需要支持的浏览器,简单地使用本机实现)来实现过滤器

您可以将所有数据存储在外部数组中,并仅将筛选后的数据保留在绑定到UI的数据源中(使用更新):


我怀疑:(我不想在服务器端进行过滤,因为我想在上下文中保留原始数据集。嗨,是的,这与我最终得到的类似。
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);