如何获取Kendo UI网格排序事件?

7

我目前有一个Kendo-UI网格。它有几列可以供用户排序,非常好用。每一行还有一个详细信息链接,如果用户点击该链接,则会跳转到详细信息页面。我需要将当前排序作为值传递到详细信息页面。如何获取当前的排序?是否有我可以绑定的事件? 谢谢


如果链接是触发显示详细信息的原因,为什么不在那里获取当前排序? - OnaBai
1
但是我怎么知道哪一列排序已被点击? 它是升序还是降序? 即,如果我有4个列。 我在第3列上进行了降序排序。 我怎么知道呢? - user2206329
2个回答

12
你可以随时使用排序方法获取排序配置。

例如:如果grid是你的网格的id,那么执行:


// Get the grid object
var grid = $("#grid").data("kendoGrid");
// Get the datasource bound to the grid
var ds = grid.dataSource;
// Get current sorting
var sort = ds.sort();
// Display sorting fields and direction
if (sort) {
    for (var i = 0; i < sort.length; i++) {
        alert ("Field:" + sort[i].field + " direction:" + sort[i].dir);
    }
} else {
    alert("no sorting");
}

1
作为一般性建议,您不应该在评论中提出新问题,因为其他人阅读的机会相当低。话虽如此,您应该在click事件处理程序内使用类似于grid.dataItem($(this).closest("tr"))的方法来确定行,并使用dataSource.indexOf找到对应项的索引。 - OnaBai
1
当列已排序时,是否有触发的事件? - jtromans
@jtromans,不确定这是否是您要查找的内容,请查看columnReorder - OnaBai
@OnaBai 谢谢,但我指的是当列按从 ASC 到 DESC 排序时。 - jtromans
1
@jtromans 那么就没有特定的事件,你应该使用 dataBound - OnaBai
显示剩余3条评论

1
我今天遇到了这个需求,并学到了该事件自2016 R3版本(2016.3.914)起现已存在。
示例用法:
<div id="grid"></div>
<script>
  $("#grid").kendoGrid({
    columns: [
      { field: "name" },
      { field: "age" }
 ],
dataSource: {
  data: [
        { id: 1, name: "Jane Doe", age: 30 },
        { id: 2, name: "John Doe", age: 33 }
     ],
     schema: {
       model: { id: "id" }
     }
   },
   sortable: true,
    sort: function(e) {
      console.log(e.sort.field);
      console.log(e.sort.dir);
    }
  });
</script>

请参见:http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#events-sort


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接