Kendo Grid按标题单击升序降序排序

时间:2015-05-29 07:06:44

标签: kendo-ui kendo-grid kendo-asp.net-mvc

当我们点击标题栏时,剑道网格的默认排序方向是升序。

当用户第一次点击标题时,我想按降序对kendo网格进行排序。

示例:

1. Default Behavior

Studnet   Marks
abc        15
pqr        25
xyz         7

2. When Clicking on Marks Header first time

Student  Marks

pqr        25
abc        15
xyz         7

3. When clicking on Marks header second time.

Students   Marks
 xyz        7
 abc        15
 pqr        25

我想要这样的事情:

 $("#priority .k-header").eq(1).click(function(ele) {
            debugger;
            var kendoGrid = $("#priority").data('kendoGrid');
            var dsSort = [];
            var sort = kendoGrid.dataSource.sort();
            if (sort.length > 0) {
                if(sort[0].dir==="asc")
                    kendoGrid.dataSource.sort({field: sort[0].field, dir: "desc"});
                if(sort[0].dir==="desc")
                    kendoGrid.dataSource.sort({field: sort[0].field, dir: "asc"});
            }

        });

但它不起作用。

2 个答案:

答案 0 :(得分:1)

在kendo数据源中指定排序,如下所示:

var firstClick=true;

    $('#grid').data().kendoGrid.dataSource.bind('change', function(e) {
         if(firstClick){
            var kendoGrid = $("#grid").data('kendoGrid');
            var dsSort = [];
            dsSort.push({ field: "fieldName1", dir: "asc" });
            dsSort.push({ field: "fieldName2", dir: "desc" });
            ...
            kendoGrid.dataSource.sort(dsSort);
            firstClick=false;
          }
});

<强>被修改 你可以试试这个

设置全局值并调用change dataSource函数

Indentation Error

答案 1 :(得分:0)

我也在寻找这个,并遇到了这个问题。 在此期间我找到了解决方案。 我们创建了一个反转字段的函数:

function reverseSortOrderSequence() {

            setTimeout(function() {
                var colSortHeaders = $("#gridId [data-role='columnsorter']");
                $.each(colSortHeaders, function(index, item) {
                    if ($(item).attr("data-dir") === undefined) {
                        $(item).attr("data-dir", "asc");
                    } else if ($(item).attr("data-dir") === "asc") {
                        $(item).attr('data-dir', 'desc');
                    } else if ($(item).attr("data-dir") === "desc") {
                        $(item).attr('data-dir', null);
                    }
                });
            });
        }

只需用您的剑道网格ID替换gridId。

然后,在Kendo Grid配置的dataBound属性中调用此函数:

{...
   columns: ...,
   dataBound: function(event) {
       reverseSortOrderSequence();
   }
}