2017-04-24 99 views
0

的编辑按钮点击的信息。要获得行,我们可以做的当前所选行的信息,这获取排剑道电网

var current = e.sender.dataItem(e.sender.select()); 

可是如何才能让当我点击编辑按钮一样吗?我试过$("#grid").data("kendoGrid").dataItem($(e.sender).closest("tr"));它没有工作。

编辑

我想办法在下面的答案的建议,但它仍然给我空。 在截图中注释掉的代码无法正常工作或

enter image description here

完整代码

<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>

+1

http://stackoverflow.com/questions/31618607/kendoui-grid-get-selected-row-id-when-edit-button-is-clicked/31619887 #31619887 – AGuyCalledGerald

+0

e.target呢? – AGuyCalledGerald

回答

1

您应该使用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,如果你点击“edit”后检查控制台,你会发现没有区别:http://dojo.telerik.com/iqAPO

+0

谢谢。请检查我的编辑 –

+0

您应该包含与此网格相关的所有代码。截图是不够的。 – Orilux

+0

完成后,已添加所有代码 –

1

如果在网格中使用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; 
    } 
}); 
+0

谢谢。请检查我的编辑。 –

+0

你可以在你的问题中包含你的网格定义吗? – Sandman

+0

请找到所有的代码 –