Kendo ui 获取剑道网格编辑按钮点击的行信息

Kendo ui 获取剑道网格编辑按钮点击的行信息,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,要获取当前选定行的行信息,可以执行以下操作 var current = e.sender.dataItem(e.sender.select()); 但是当我点击编辑按钮时,如何得到相同的结果呢 我尝试了$(“#网格”).data(“kendoGrid”).dataItem($(e.sender).closest(“tr”)它不起作用 编辑 我尝试了下面答案中建议的方法,但仍然没有给我答案。 在屏幕截图中,注释的代码也不起作用 完整代码 剑道UI片段 $(“#网格”).kendoGrid

要获取当前选定行的行信息,可以执行以下操作

 var current = e.sender.dataItem(e.sender.select());
但是当我点击编辑按钮时,如何得到相同的结果呢

我尝试了
$(“#网格”).data(“kendoGrid”).dataItem($(e.sender).closest(“tr”)它不起作用

编辑

我尝试了下面答案中建议的方法,但仍然没有给我答案。 在屏幕截图中,注释的代码也不起作用

完整代码


剑道UI片段
$(“#网格”).kendoGrid({
栏目:[
{字段:“id”},
{字段:“名称”},
{字段:“年龄”},
{命令:“编辑”},
{命令:“列表”}
],
数据源:{
数据:[
{id:1,姓名:“Jane Doe”,年龄:30},
{id:2,姓名:“John Doe”,年龄:33}
],
模式:{
型号:{
id:“id”,
字段:{
“id”:{type:“number”}
}
}
}
},
可编辑:“弹出”,
工具栏:[“创建”],
数据绑定:函数(e){
//
},
编辑:功能(e){
//此currentItem为空:(
var currentItem=$(“#网格”).data(“kendoGrid”).dataItem($(e.sender).最近的(“tr”);
如果(!e.model.isNew()){
$('.k-window-title')。文本(“牛顿酋长”);
}
}
});

您应该使用
e.container
而不是
e.sender
,如下所示:

$("#grid").data("kendoGrid").dataItem($(e.container).closest("tr"))
更新以使其与弹出窗口一起工作

如果您使用的是弹出式编辑器,那么容器将是弹出式编辑器本身,而上述操作将不起作用

在这种情况下,您可以使用该行的uid在表中查找该行:

var row = $("#grid").data("kendoGrid").tbody.find("tr[data-uid='" + e.model.uid + "']");

如果您不需要实际行的引用,而只需要数据项,那么您可以简单地使用
e.model
。我已经用您的代码创建了一个dojo,如果您在单击“编辑”后检查控制台,您将看到没有区别:

如果在网格中使用
编辑功能,则可以使用以下命令访问处于编辑模式的数据项属性:

var grid = $("#yourGrid").kendoGrid({
    dataSource: yourGridDatasource,        
    ...                
    edit: function (e) {
        var attribute = e.sender.dataItem(e.container).attributeName;
        // or simply
        var attribute2 = e.model.attributeName;
    }
});

那么e.target呢?你能在你的问题中也包括你的网格定义吗?我的例子会很好(使用@Orilux的编辑建议的
e.model
)?!你应该包括所有与此网格相关的代码。屏幕截图还不够。天哪!!!解决了!非常感谢!苦苦挣扎了2天。它帮助我一次性解决了两个错误。var current=$(“#网格”).data(“kendoGrid”).dataSource.get(e.model.id);此代码成功了,:)再次感谢。。我很高兴它成功了,但正如我之前所说,你可以进一步简化它:var current=e.model;请简要说明这是如何工作的,以及为什么这是解决问题的好办法。这使得答案对OP和未来的访问者更有用。
var gridDataById= $("#grid").data("kendoGrid");   
//Getting selected row
var selectedRow = gridDataById.dataItem(gridDataById.select());
console.log(selectedRow);