【问题标题】:Select programmatically Kendo grid row以编程方式选择剑道网格行
【发布时间】:2016-01-13 07:10:39
【问题描述】:

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

在剑道网格配置中,有一些函数可以获取上下文(网格)并读取选定的行:

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

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

在“刷新(网格)”函数中,我通过以下方式获得选定的行:

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

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

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

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

正如我在上面所说的那样,在之前的“刷新(网格)”方法变量 selectedRow 将是空的。

有人对此有意见吗?为什么会这样?

谢谢

【问题讨论】:

    标签: javascript jquery kendo-ui


    【解决方案1】:

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

    【讨论】:

    • 谢谢,只需要更改行[rows.length - 1];到模型[rows.length - 1];
    猜你喜欢
    • 2018-01-03
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多