我想获取剑道网格中所选行的索引。下面的代码根据当前页面返回行的索引。它不服从网格的页码和页面大小。
因此,如果网格的页面大小为50,则您位于第二页,然后单击第五行,则索引应该为54
,因为您单击了第五十五行。
以下两个选项均无效
选项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);
答案 0 :(得分:0)
这就是我所做的。我希望有更好的选择
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);
}
答案 1 :(得分:0)
就我的研究而言,没有一种方法可以一目了然地获得与您的数据列表相关的选定索引。但是,这是一种indexOf
方法来完成此任务,该方法可用于多个页面。请注意,您首先必须找到所选行作为dataItem。这类似于您的第二种方法,但是我也使用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
,并且选定的索引将在分页时重置。希望有帮助!