当前位置: 首页 > 知识库问答 >
问题:

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

姜志
2023-03-14

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

 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>

共有3个答案

仉运乾
2023-03-14
var gridDataById= $("#grid").data("kendoGrid");   
//Getting selected row
var selectedRow = gridDataById.dataItem(gridDataById.select());
console.log(selectedRow); 
傅新
2023-03-14

您应该使用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

狄玮
2023-03-14

如果在网格中使用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