我正在尝试像这样访问行索引:
var grid = $("#grid").data("kendoGrid");
alert(grid.select().index());
我在此jsfiddle链接中添加了我的代码。这个代码在我的系统中工作,我不知道为什么在jsfiddle中没有调用deleteRecord()
方法,但这不是实际的问题。
此处点击最后一行的取消按钮提醒消息时,索引将显示为 8 ,但实际索引为 4 。每个按钮只给我错误的索引。
答案 0 :(得分:14)
你在小提琴中使用了一个非常古老的Kendo UI版本,因此选择也不起作用。它没有找到deleteRecord
的原因是你设置你的小提琴以window.onLoad
包裹,这发生在document.ready
之后。
关于行索引:您需要确定相对于网格数据行的索引(如果您只是获取所选行的索引,它也将计算分组行;如果您对详细行进行相同的操作有任何),所以你可以这样使用grid.items()
:
var grid = $("#grid").data("kendoGrid");
var dataRows = grid.items();
var rowIndex = dataRows.index(grid.select());
请参阅演示here。
如果你真正感兴趣的是访问所选行的数据,你应该使用类似的东西(请注意,所有这一切都假设您的网格设置为单元格或单行选择):
var tr = grid.select().closest("tr");
var dataItem = grid.dataItem(tr);
答案 1 :(得分:1)
所以,它可能只是我的kendo配置,但我必须访问所选记录的行索引的方式是这样的:
var archGrid = $("#archiveRecords").data("kendoGrid");
var impGrid = $("#importedRecords").data("kendoGrid");
var archRow = archGrid.select();
var impRow = impGrid.select();
var archRowIndex = archRow[0].rowIndex;
var impRowIndex = impRow[0].rowIndex;
因此,一旦我在变量中设置了索引,我就必须通过添加CSS列并将其移除到指定的行来设置它。我不得不使用element.find方法来执行此操作:
if (condition1) {
impRow.removeClass('k-state-selected');
$('#importedRecords').data('kendoGrid').element.find('tbody tr:eq(' + archRowIndex + ')').addClass('k-state-selected');
}
else if (condition2){
archRow.removeClass('k-state-selected');
$('#archiveRecords').data('kendoGrid').element.find('tbody tr:eq(' + impRowIndex + ')').addClass('k-state-selected');
}
刚发布,因为我花了很长时间寻找如何通过行索引设置选定的行。祝你好运!
答案 2 :(得分:0)
下面的代码将为您提供行索引以及kendo网格中的列索引 我希望这会有用
var grid = $("#kendogridid").data("kendoGrid");
var row = $(this).closest("tr");
var rowIdx = $("tr", grid).index(row);
var colIdx = $("td", row).index(this);