javascript - kendo ui 网格分组不区分大小写

标签 javascript kendo-ui kendo-grid

我正在尝试使用剑道网格进行分组,但我遇到了剑道分组默认功能的问题。 Kendo 网格对列进行分组,但它不会区分“USA”和“usa”的记录,这些记录带有两个不同的分组记录集。 “Washington”和“Washington”等国家或名称也是如此。我想要一个不区分大小写的分组(“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
                        }
                        );

最佳答案

我重写了 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);
    }

link demo

关于javascript - kendo ui 网格分组不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316136/

相关文章:

javascript - 从 API onclick 加载数据

PHP/Javascript 将带有 ' and "的 html 从 PHP 插入到 JavaScript 函数中

filter - 剑道多选搜索全文搜索

css - 用图标替换剑道按钮

kendo-ui - 使用 Kendo UI Grid,您如何访问过滤和排序的数据?

javascript - React + Electron webview标签预加载js不起作用

javascript - raycaster 是否应该始终位于 render() 函数中?

kendo-ui - Kendo UI TreeView : Add only nodes not exisisting in the view

html - 使用 HTML Table 作为数据源将数据绑定(bind)到 Kendo UI Template

asp.net-mvc - 将聚合函数与 Kendo UI MVC Grid 包装器一起使用