Kendo UI Grid Group нечувствителен к регистру

Я пытаюсь сгруппировать сетку кендо, но столкнулся с проблемой с функциональностью группировки кендо по умолчанию. Сетка кендо группирует столбцы, но записи «США» не отличаются от «США», эти записи идут с двумя разными сгруппированными наборами записей. То же самое касается стран или названий, таких как «Вашингтон» и «Вашингтон». Я хотел бы иметь группу без учета регистра («США» и «США» означают одно и то же логически, кроме их случая), у кого-нибудь есть идеи о том, как это сделать. Я не мог найти это нигде в документации по кендо.

Вот мой фрагмент кода.

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

person Raza    schedule 19.08.2013    source источник


Ответы (1)


Я переопределяю метод groupBy в Kendo.data.QUery, и он работает:

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

демонстрационная ссылка

person Jason Lam    schedule 18.05.2017