编程选择Kendo网格行。

19

我发现了一些标题相似的帖子,但仍然无法解决我的问题。肯定是我做错了什么。

在Kendo网格配置中,有一些函数需要使用上下文(网格)并读取所选行:

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

这是我如何配置“change”事件。

在函数“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);

正如我之前所说,在先前的“refresh(grid)”方法中,变量selectedRow将是null。

有人对此有什么看法吗?为什么会发生这种情况?

谢谢

1个回答

30
根据Grid文档,"select"方法接受"string"参数(选择器)或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);

1
谢谢,唯一需要更改的是将rows[rows.length - 1];更改为models[rows.length - 1]; - s1cart3r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接