0

我有一个应用了过滤器的数据源。当我为列表视图启用可过滤搜索时,它会清除数据源上的原始过滤器。如何让它在过滤后的数据子集中搜索?

这是实际问题:http: //jsfiddle.net/KS7dB/。它被 {b: "2B"} 过滤。开始在搜索中输入“ds”,它会清除过滤器并开始搜索所有内容,而不仅仅是过滤后的子集。关于如何解决此行为的任何想法?

var ds1 = new kendo.data.DataSource({
    data: [{
        stagename: "ds1 A",
        b: "1b"
    }, {
        stagename: "ds1 B",
        b: "2b"
    }, {
        stagename: "ds1 C",
        b: "2b"
    }, {
        stagename: "ds1 D",
        b: "2c"
    }, {
        stagename: "ds1 E",
        b: "2c"
    }],
    filter: {
        field: 'b',
        operator: 'eq',
        value: '2b'
    }
});

$("#stages_listview").kendoMobileListView({
    dataSource: ds1,
    template: $("#stages_listview_template1").html(),
    filterable: {
        field: 'stagename',
        operator: 'contains',
        ignoreCase: true
    }
});
4

1 回答 1

1

我确实花了一些时间来研究这个问题,问题是,一旦您在列表视图上创建过滤器,实际上这是下划线数据源上的过滤器,它们不是两个单独的累积过滤器。因此,您观察到的行为似乎是正确的。

解决选项:

  1. 覆盖数据源上的过滤器函数,使其接受通过列表视图传递给它的参数,并始终附加默认数据源过滤器。沿着这些线的东西。我不得不承认我没有设法制定最终和功能性的解决方案。

    lw.dataSource.filter = function() {
    arguments[arguments.length]= { field: "b", operator: "eq", value: "2b" };
    arguments.length += 1;
    var result = lw.dataSource.originalfilter.apply(this, arguments);
    return result;
    

    }

  2. 过滤服务器端

于 2013-08-06T08:33:46.100 回答