![](/img/trans.png)
[英]How to filter kendo grid with a column that contains multiselect - multiple values?
[英]Custom filter function for Kendo Grid with multiselect column
我需要编写一个自定义过滤器函数。 我有一个Kendo网格,其中有多个列,即名称,年龄,城市。 名称列应为多选。 现在,当进行过滤时,整个网格上的逻辑应为“和”,但特定的列(名称)应具有“或”逻辑。
我看过这篇文章和其他几篇类似的文章。 在此示例中,telerik建议删除data-bind属性
element.removeAttr("data-bind");
直到我要清除multiselect字段中的所有标签之前,这确实非常有效。 仅供参考,将网格配置为filterMode:“行”。 在这种情况下,标记根本不会清除。
所以现在,我在这里尝试编写自定义过滤器函数。 这是我到目前为止的内容:
filterable: {
multi: true,
cell: {
template: function getteamplate(args) {
args.element.kendoMultiSelect({
dataSource: args.dataSource,
dataTextField: "name",
dataValueField: "name",
change: function change(e) {
var dataSource = $scope.grid.dataSource;
// if filters are not yet set, do so now
if (!dataSource.filter()) {
$scope.grid.dataSource.filter({
logic: "and",
filters: []
});
}
var dataFilters = dataSource.filter().filters;
var values = this.value();
if (values.length > 0) {
$log.log("filtering");
var newFilter = {
field: "name",
operator: function operator(item, value) {
$log.log("Item: " + item);
$log.log(value());
var found = false;
value().forEach(function forEach(element) {
$log.log("Value: " + element);
if (item.indexOf(element) !== -1) {
found = true;
}
});
return found;
},
value: values,
fieldName: "dataSource"
};
dataFilters.push(newFilter);
$log.log(dataFilters);
}
dataSource.filter({
logic: "and",
filters: dataFilters
});
}
});
//args.element.removeAttr("data-bind");
},
showOperators: false
}
}
有两点值得注意
在此论坛帖子之后 ,此代码似乎非常简单:
运算符:function(item,value){//实现逻辑}
除非记录得不好,而且我不确定参数“ item”和“ value”是什么或它们来自何处。
有点迟了,但是没关系。 为了正确清除标签,我添加了以下内容
function getteamplate(args) { args.element[0].id = "<<filterElementID>>"; args.element.kendoMultiSelect({ dataSource: args.dataSource, .............
if(!_.find(this.dataSource.filter() ? this.dataSource.filter().filters : [] , function(filter){ return filter.field == "name" })) $("#<<filterElementID>>").data().kendoMultiSelect.value([]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.