【问题标题】:Kendo ListView search doesn't work properly with filtered dataKendo ListView 搜索不适用于过滤数据
【发布时间】:2013-08-04 16:59:49
【问题描述】:

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

这是正在解决的问题: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
    }
});

【问题讨论】:

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


    【解决方案1】:

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

    解决选项:

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

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多