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())代码>