Kendo ui 如何获取剑道网格中选定行的索引

Kendo ui 如何获取剑道网格中选定行的索引,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我想获取剑道网格中选定行的索引。下面的代码返回基于当前页面的行索引。它不符合网格的页码和页面大小。 所以,若网格的页面大小是50,那个么你们在第二页,点击第五行,那个么索引应该是54,因为你们点击了第55行 以下两个选项都不起作用 选项1 grid.on('click', '.t-doc', function (e) { var kendoGrid = $("#grid").getKendoGrid(); var row = $(e.target).closest

我想获取剑道网格中选定行的索引。下面的代码返回基于当前页面的行索引。它不符合网格的页码和页面大小。
所以,若网格的页面大小是50,那个么你们在第二页,点击第五行,那个么索引应该是
54
,因为你们点击了第55行

以下两个选项都不起作用

选项1

grid.on('click', '.t-doc', function (e) {
        var kendoGrid = $("#grid").getKendoGrid();
        var row = $(e.target).closest("tr");        
        var index = $("tr", kendoGrid.tbody).index(row);
}
选项2

grid.on('click', '.t-doc', function (e) {
        var kendoGrid = $("#grid").getKendoGrid();
        var ds = kendoGrid.dataSource;
        var dataItem = kendoGrid.dataItem($(e.target).closest("tr"));
        var index = ds.indexOf(dataItem);

这就是我所做的。我希望有更好的选择

grid.on('click', '.t-doc', function (e) {
        var kendoGrid = $("#grid").getKendoGrid();
        var ds = kendoGrid.dataSource;
        var dataItem = kendoGrid.dataItem($(e.target).closest("tr"));
        var index = ((ds.page() - 1) * ds.pageSize()) + ds.indexOf(dataItem);
}

这就是我所做的。我希望有更好的选择

grid.on('click', '.t-doc', function (e) {
        var kendoGrid = $("#grid").getKendoGrid();
        var ds = kendoGrid.dataSource;
        var dataItem = kendoGrid.dataItem($(e.target).closest("tr"));
        var index = ((ds.page() - 1) * ds.pageSize()) + ds.indexOf(dataItem);
}

就我的研究而言,没有一种方法可以一下子获得与数据列表相关的选定索引。然而,这是一种实现这一点的
indexOf
方法,可用于多个页面。请注意,首先必须将所选行作为数据项查找。这与第二种方法类似,但是我也使用
grid.select()
方法来获取所选元素,而不是父行。下面是此操作的代码:

function () {
  // Get the grid element
  var grid = $('#grid').data('kendoGrid');

  // Get the selected row as a dataItem
  var dataItem = grid.dataItem(grid.select());

  // Compute the index of the dataItem
  var index = grid.dataSource.indexOf(dataItem);

  // Do whatever you need with the index
}

一行接一行,这并没有短多少,但是它使您不必手动计算索引,这感觉有点干净。这在自动分配的guid值之外工作,因此它应该适用于用户稍后添加的行。另外,请注意,当没有选定索引时,索引将为
-1
,并且选定索引在分页时重置。希望有帮助

就我的研究而言,没有一种方法可以一下子获得与数据列表相关的选定索引。然而,这是一种实现这一点的
indexOf
方法,可用于多个页面。请注意,首先必须将所选行作为数据项查找。这与第二种方法类似,但是我也使用
grid.select()
方法来获取所选元素,而不是父行。下面是此操作的代码:

function () {
  // Get the grid element
  var grid = $('#grid').data('kendoGrid');

  // Get the selected row as a dataItem
  var dataItem = grid.dataItem(grid.select());

  // Compute the index of the dataItem
  var index = grid.dataSource.indexOf(dataItem);

  // Do whatever you need with the index
}

一行接一行,这并没有短多少,但是它使您不必手动计算索引,这感觉有点干净。这在自动分配的guid值之外工作,因此它应该适用于用户稍后添加的行。另外,请注意,当没有选定索引时,索引将为
-1
,并且选定索引在分页时重置。希望有帮助

这就是我要做的,但我会使用change事件,它只会在选择更改而不是每次单击时触发。这就是我要做的,但我会使用change事件,它只会在选择更改而不是每次单击时触发。另一个选项:
var selectedItem=grid.dataItem(grid.select())另一个选项:
var selectedItem=grid.dataItem(grid.select())