要获取当前选定行的行信息,可以执行以下操作
var current = e.sender.dataItem(e.sender.select());
但如何获得相同的,当我点击编辑按钮?
我尝试了$("#rid"). data("kendGrid"). dataItem($(e.sender).最近("tr"));
它没有工作。
编辑
我尝试了下面答案中建议的方法,但它仍然给我空值
完整代码
<script src="http://kendo.cdn.telerik.com/2016.3.914/js/kendo.all.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Kendo UI Snippet</title>
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.914/styles/kendo.common.min.css" />
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.914/styles/kendo.rtl.min.css" />
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.914/styles/kendo.silver.min.css" />
<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.3.914/styles/kendo.mobile.all.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<!--<script src="http://kendo.cdn.telerik.com/2016.3.914/js/kendo.all.min.js"></script>-->
<!--<script src="http://kendo.cdn.telerik.com/2016.3.914/js/kendo.all.min.js"></script>-->
<script src="Scripts/KendoUI.js" type="text/javascript">
</head>
<body>
<div id="grid">
</div>
<script>
$("#grid").kendoGrid({
columns: [
{ field: "id" },
{ field: "name" },
{ field: "age" },
{ command: "edit" },
{ command: "list" }
],
dataSource: {
data: [
{ id: 1, name: "Jane Doe", age: 30 },
{ id: 2, name: "John Doe", age: 33 }
],
schema: {
model: {
id: "id",
fields: {
"id": { type: "number" }
}
}
}
},
editable: "popup",
toolbar: ["create"],
dataBound: function (e) {
//<input name="age" class="k-input k-textbox" type="text" data-bind="value:age">
},
edit: function (e) {
//This currentItem is null :(
var currentItem = $("#grid").data("kendoGrid").dataItem($(e.sender).closest("tr"));
if (!e.model.isNew()) {
$('.k-window-title').text("Newton Sheikh");
}
}
});
</script>
</body>
</html>
var gridDataById= $("#grid").data("kendoGrid");
//Getting selected row
var selectedRow = gridDataById.dataItem(gridDataById.select());
console.log(selectedRow);
您应该使用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
。我用你的代码创建了一个道场,如果你在点击“编辑”后检查控制台,你会看到没有区别:http://dojo.telerik.com/iqAPO
如果在网格中使用edit
功能,则可以使用以下方式访问处于编辑模式的数据项属性:
var grid = $("#yourGrid").kendoGrid({
dataSource: yourGridDatasource,
...
edit: function (e) {
var attribute = e.sender.dataItem(e.container).attributeName;
// or simply
var attribute2 = e.model.attributeName;
}
});
有人知道一种只需单击行即可触发行编辑的方法吗? 我希望看到与单击编辑命令按钮时相同的功能,但通过选择行触发。
我有一个简单的网格,当使用JQuery单击编辑按钮时,我在收集个人ID时遇到了很多麻烦。我需要个人ID,因为我要添加一个文件上传到内联编辑列,我想上传一个文件,并将其与个人ID相关联。所有帮助欢迎:)
我有一个剑道网格和一个按钮栏。单击按钮时,我希望它调用一个javascript函数,并将行的数据作为参数。这是我到目前为止所拥有的
我在剑道网格上使用事件来显示几个隐藏的列。然后,我将在事件中再次隐藏它们。 我的问题是,似乎没有取消编辑模式的事件,所以如果用户单击取消,列会被搞砸。 是否有未记录的事件需要取消,还是需要找到解决方案?
我无法编辑剑道网格内联和弹出两者。单击“保存”按钮时,我的操作方法无法获取当前编辑单元格的值。 控制器代码: 在控制器中,我只得到空值。请帮帮我,我想使用剑道mvvm教学。
嗨,我正在尝试做剑道网格,但它不工作,显示网格,但没有显示数据。我不知道怎么了。我不知道parametersMap是怎么工作的。请帮帮我。 控制器 这是剧本 Json数据返回:http://localhost:53232/Home/GetGeo?id=5