如何获取分组的Kendo网格中所选行的索引和数据

时间:2013-12-28 13:38:34

标签: javascript jquery html5 kendo-ui kendo-grid

我正在尝试像这样访问行索引:

var grid = $("#grid").data("kendoGrid");
alert(grid.select().index());

我在此jsfiddle链接中添加了我的代码。这个代码在我的系统中工作,我不知道为什么在jsfiddle中没有调用deleteRecord()方法,但这不是实际的问题。

此处点击最后一行的取消按钮提醒消息时,索引将显示为 8 ,但实际索引为 4 。每个按钮只给我错误的索引。

3 个答案:

答案 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);