【问题标题】:Custom sort function kendo grid自定义排序功能剑道网格
【发布时间】:2014-05-20 17:57:15
【问题描述】:

任何人都可以告诉我如何在 javascript 中编写我们自己的函数以在剑道网格中进行排序。而我们是否需要为asc和desc写两个函数?

任何帮助.. 非常感谢!

【问题讨论】:

    标签: javascript kendo-ui kendo-grid


    【解决方案1】:

    您可以做到,而且您不必为升序和降序编写两个不同的函数,因为您唯一需要做的就是为需要特殊算法的 column 字段提供 compare 函数.

    例子:

    假设我们要按namestring)对网格进行排序,这是我们的数据:

    data    : [
        { id : 1, name : "john" },
        { id : 2, name : "jane" },
        { id : 3, name : "Jane" },
        { id : 4, name : "jack" },
        { id : 5, name : "jane" },
        { id : 6, name : "janette" },
        { id : 7, name : "John" }
    ],
    

    列定义为:

    columns   : [
        { field: "id", title: "id" },
        { field: "name", title: "Name"}
    ]
    

    我们得到的是:

    id   Name
    4    jack
    2    jane
    5    jane
    3    Jane
    6    janette
    1    john
    7    John
    

    正如我们所见,我们将它按字母顺序排序,混合大小写,但小写总是在大写之前。

    如果我们想先大写再小写(ASCII 顺序),我们应该将columns.sortable.compare 定义为name

    columns   : [
        { field: "id", title: "id" },
        { 
            field: "name", 
            title: "Name",
            sortable: {
                compare: function (a, b) {
                    return a.name === b.name ? 0 : (a.name > b.name) ? 1 : -1;
                }
            }
        }
    ]
    

    compare 函数接收两个要比较的项目。

    现在,我们得到的是:

    id   Name
    3    Jane
    7    John
    4    jack
    2    jane
    5    jane
    6    janette
    1    john
    

    ASC 和 DESC 都可以试试here 简单又整洁!

    【讨论】:

    • 感谢您的回复!但是我正在做的是在将数据获取到剑道网格时,我在页面加载时从 db 获取具有特定页面大小的特定页面的数据(从名称限制 100、200 中选择 FName、LName),以及何时在页面上3(示例)只能对第 3 页数据进行排序,但不能基于整个数据。
    • 按你说的应该用ServerSorting。你试过了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多