以编程方式选择Kendo网格行

我找到了类似标题的post,但我仍然无法解决我的问题。 我肯定做错了什么。

在Kendo网格配置中有一些function,它采用上下文(网格)和读取所选行:

change: function (e) { refresh(this); } 

这就是我配置“更改”事件的方式。

在函数“refresh(grid)”中,我按以下方式选择了行:

  refresh: function (grid) { var selectedRows = grid.select(); var selectedRow = grid.dataItem(selectedRows[0]); var id = selectedRow.Id; } 

当我手动选择网格行时,此方法非常有效。 但是当我以编程方式选择行时,“selectedRow”变量为null。

我按照以下方式以编程方式选择:

 var grid = $("#grid").data("kendoGrid"); var rows = grid.dataSource.data(); var row = rows[rows.length - 1]; grid.select(row); 

正如我在上面的悲伤,在之前的“刷新(网格)”方法变量selectedRow将为null。

有人对此有一些看法吗? 为什么会这样?

谢谢

根据Grid文档, “select”方法接受“string”参数(selector)或jQuery元素。 这就是为什么如果您需要正确选择行,您应修改当前代码,如下所示:

 var grid = $("#grid").data("kendoGrid"); //if you are using the "pageable" option of the grid //you should get the visible rows using the .view() method var models = grid.dataSource.data(); var model = models[models.length - 1]; var lastRowUid = model.uid; //find the target row element: var row = grid.table.find("[data-uid=" + lastRowUid + "]"); grid.select(row);