我有一个应用了过滤器的数据源。当我启用可筛选的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
}
});
答案 0 :(得分:1)
我确实花了一些时间深入研究这个问题,问题是,只要在listview上创建过滤器,实际上这是对下划线数据源的过滤器,它们就不是两个单独的累积过滤器。因此,您观察到的行为似乎是正确的。
解决方案:
覆盖数据源上的过滤器函数,因此需要参数 通过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;
}
过滤服务器端