在kendo ui网格中对组进行排序

时间:2013-03-18 09:25:42

标签: javascript kendo-ui kendo-grid

这里我编写了基于id获取CategoryName值的存储过程,值来自印度,美国,巴西等服务,但在UI部分值是按字母顺序自动排序显示像美国,巴西,印度这样的组。我希望按顺序显示印度,美国,巴西等格式。我究竟做错了什么?提前谢谢。

$(document).ready(function () {
var grid = $("#grid").kendoGrid({
    dataSource: {
        type: "GET",
        transport: {
            read: {
                url: "some url placed here",
                dataType: "jsonp"
            }
        },
        pageSize: 20,
        serverSorting: false,
        group: {
            field: "CategoryName",
            aggregates: [{
                field: "abc",
                aggregate: "count"
            }, {
                field: "def",
                aggregate: "sum"
            }, {
                field: "ghi",
                aggregate: "sum"
            }]
        },
        aggregate: [{
            field: "abc",
            aggregate: "count"
        }, {
            field: "def",
            aggregate: "sum"
        }, {
            field: "ghi",
            aggregate: "sum"
        }]
    },
    columns: [
    //column section goes here.....
    ],
    sortable: false
    //...
});

});

3 个答案:

答案 0 :(得分:1)

我记得kendo ui文档中的某个地方(可能是datasource> groups)它说,如果你定义组,分组需要排序的数据。删除所有组并以普通的vanilla网格显示数据并查看如果应用了一些自动排序。

答案 1 :(得分:0)

这是一个完整的猜测,但您是否尝试将ServerSorting属性设置为true?

答案 2 :(得分:0)

Kendo UI网格分组默认为您提供ListSortDirection.Ascending排序。如果你想做别的事,你必须设置它。如果您正在使用WebApi界面并为Kendo.mvc.dll方法.ToDataSourceResult(kendoRequest);生成kendoRequest,那么您可以尝试这样的事情:

var sort = kendoRequest.Sorts.FirstOrDefault();
var group = kendoRequest.Groups.FirstOrDefault(); 
if(sort != null && group != null) {
   if(sort.Member == group.Member && sort.SortDirection == ListSortDirection.Descending) {
      kendoRequest.Groups[0].SortDirection = sort.SortDirection;
   }
}

这样,Grid中的Sort功能会在匹配时影响Group by列。