2015-05-29 185 views
0

当点击标题栏时,剑道网格的默认排序方向为升序。Kendo Grid根据标题升序排序降序点击

我想在用户首次点击标题时按照降序对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"}); 
      } 

     }); 

但它不工作。

回答

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。

然后,调用这个函数在你的剑道电网配置的数据绑定属性:

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

我试过这个解决方案,但kendo在设置之后在某处删除了该属性。如果我之后手动设置,它工作正常。我还检查了该属性是否真的添加在dataBound事件中,但由于某种原因,kendo稍后将其删除。 –

1

指定剑道数据源如下排序:

$("#grid").kendoGrid({ 
     dataSource: { 
      .. 
      , sort: { field: "Marks", dir: "desc" } 
      .. 
     } 
    }); 

编辑 ,你可以尝试这样的

设置全局值和呼叫改变数据源功能

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

当我在第一个数据源绑定唯一递减顺序做了这样的事情剑道加载数据。我想在HEADER CLICK上对数据进行排序,而不是数据绑定。第一次,数据绑定数据应该按照学生姓名的升序进行加载。 –