我正在尝试使用kendo网格进行分组,但我遇到了kendo分组的默认功能问题。 Kendo网格对列进行分组,但它没有将“USA”与“usa”的记录区分开来,这些记录带有两个不同的分组记录集。同样适用于“华盛顿”和“华盛顿”等国家或地区。我想要一个不区分大小写的分组(“美国”和“美国”在逻辑上与他们的情况相同),任何人都知道如何做到这一点。我无法在kendo文档中找到它。
这是我的代码段。
Maplytics_jQ19("#grdData").kendoGrid(
{
editable: false,
sortable: true,
filterable: true,
//dataSource: _recordsInGrid,
groupable: true,
dataSource: {
data: _recordsInGrid,
group: { field: groupingField }
},
reorderable: true,
resizable: true,
dataBound: onDataBound,
selectable: false,
columns: columns,
schema: {
data: "_recordsInGrid"
},
scrollable: true
}
);
答案 0 :(得分:0)
我覆盖了Kendo.data.QUery中的groupBy方法,它可以工作:
function groupValueComparer(a, b) {
if (a && a.getTime && b && b.getTime) {
return a.getTime() === b.getTime();
}
if (typeof a == "string" && typeof b == "string") {
return a.toLowerCase() == b.toLowerCase();
}
return a === b;
}
var isEmptyObject = $.isEmptyObject;
kendo.data.Query.prototype.groupBy = function(descriptor) {
if (isEmptyObject(descriptor) || !this.data.length) {
return new Query([]);
}
var field = descriptor.field,
sorted = this._sortForGrouping(field, descriptor.dir || "asc"),
accessor = kendo.accessor(field),
item,
groupValue = accessor.get(sorted[0], field),
group = {
field: field,
value: groupValue,
items: []
},
currentValue,
idx,
len,
result = [group];
for(idx = 0, len = sorted.length; idx < len; idx++) {
item = sorted[idx];
currentValue = accessor.get(item, field);
if(!groupValueComparer(groupValue, currentValue)) {
groupValue = currentValue;
group = {
field: field,
value: groupValue,
items: []
};
result.push(group);
}
group.items.push(item);
}
return new kendo.data.Query(result);
}