【问题标题】:How to get kendo ui grid sort event?如何获得剑道 ui 网格排序事件?
【发布时间】:2013-05-15 02:30:12
【问题描述】:

我目前有一个 Kendo-UI 网格。它有几列可供用户排序,效果很好。我还在每一行上都有一个详细信息链接,因此如果用户单击此链接,他们将被带到详细信息页面。我需要将当前排序作为值传递到详细信息页面。我怎样才能得到当前的排序?有我可以绑定的事件吗? 谢谢

【问题讨论】:

  • 如果链接是触发显示详细信息的原因,为什么不在那里获取当前排序?
  • 但是我怎么知道点击了哪一列排序呢?如果它下降或上升?即如果我有 4 列。我按第 3 列 desc 排序。我怎么知道的?
  • 请检查我的答案

标签: kendo-ui


【解决方案1】:

您可以随时使用sort method 获取排序配置。

示例: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");
}

【讨论】:

  • 这正是我想要的。谢谢你。你知道如何获取点击行的行号值吗?如果我点击第 5 行以提醒 5.. 或者如果我转到第 4 页并点击第 5 项以提醒 45?
  • 作为一般建议,您不应该在评论中提出新问题,因为其他人阅读它的机会非常低。也就是说,您应该使用与单击的行对应的项目的dataSource.indexOf,并且您在click 事件的处理程序中使用grid.dataItem($(this).closest("tr")); 之类的东西知道该行。
  • 酷,唯一的问题是一旦应用了排序,id 仍然是相同的。我本来希望第一项的索引为 1。但是当项目按 desc 排序时,第一项是 1200。我只想要每行的行号,而不管排序如何。谢谢你,我会把它作为一个新的讨论发布。但是很难在堆栈流上发布问题。它一直说这个问题没有通过他们的验证。
  • 列排序后是否触发事件?
  • @jtromans 那么没有具体的事件,你应该使用dataBound
【解决方案2】:

我今天遇到了这种需求,并了解到该事件现在已出现在 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

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多