2013-08-03 98 views
0

我有一个应用了过滤器的数据源。当我为列表视图启用可过滤搜索时,它会清除数据源上的原始过滤器。我如何才能在筛选的数据子集内搜索?Kendo 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

我也花了一些时间挖掘到这一点,问题是,一旦你创建你的列表视图过滤器,在实践中是强调数据源的过滤器,它们不是两个独立的累积过滤器。因此你观察到的行为似乎是正确的。各地选项

工作:

  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. 滤波器服务器侧