Kendo ListView搜索无法正常使用过滤后的数据

时间:2013-08-03 13:53:57

标签: javascript jquery search kendo-ui kendo-mobile

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

以下是行动中的问题: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
    }
});

1 个答案:

答案 0 :(得分:1)

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

解决方案:

  1. 覆盖数据源上的过滤器函数,因此需要参数 通过listview传递给它并始终附加默认数据源 过滤。这些线条旁边的东西。我不得不承认我没有 设法制定最终的和功能性的解决方案。

    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. 过滤服务器端