2

我正在尝试使用剑道网格进行分组,但是我遇到了剑道分组的默认功能的问题。剑道网格对列进行分组,但“USA”和“usa”的记录没有区别,这些记录带有两个不同的分组记录集。同样适用于国家或名称,如“华盛顿”和“华盛顿”。我想要一个不区分大小写的分组(“USA”和“usa”在逻辑上与他们的情况不同),任何人都知道如何做到这一点。我在剑道文档的任何地方都找不到这个。

这是我的代码片段。

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
                        }
                        );
4

1 回答 1

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);
    }

链接演示

于 2017-05-18T10:07:41.627 回答