2017-04-24 121 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

請找到所有的代碼 –