2013-04-05 65 views
1

我是新來劍道和劍道網格,但我想學習如何使用詳細網格應支持批量編輯的主要細節劍道網格。數據在本地JavaScript對象中可用。劍道網格改變指標和取消不工作

This jsFiddle演示我看到的問題。

以下是如何電網正在創建- 看到的jsfiddle的完整片段 -

$("#grid").kendoGrid({ 
    dataSource: items, 
    detailInit: createDetail, 
    columns: [ 
     { field: "Item", width: "200px" }, 
    ] 
}); 

function createDetail(e) { 
    $("<div/>") 
     .appendTo(e.detailCell) 
     .kendoGrid({ 
      dataSource: { 
       batch:true, 
       transport: { 
        read: function (options) { 
         options.success(e.data.SubItems); 
        } 
       } 
      }, 
      editable:true, 
      pageable:true, 
      toolbar: ["save", "cancel"], 
      columns: [ 
       { field: "SubItem", title: "Sub Item", width: 200 }, 
       { field: "Heading1", title: "Heading 1", width: 100 } 
      ] 
     }); 
} 
  1. 當你在編輯網格中的項目,然後單擊下一個單元格,細節網格即使在相鄰的單元格中,也能自動摺疊,無論我點擊哪裏。當我再次打開它時,我沒有看到單元格中的變化指示器(紅色凹槽),但是新值已經存在。 如果我將save保存到ajax調用中,Kendo會發送已編輯的正確的詳細項目。

  2. 當我點擊取消更改時沒有任何反應。

如何讓網格不崩潰並查看更改指標?

如何取消更改以正常工作?

[更新] - 進一步的調查顯示,如果我使用較舊的Kendo版本2011.3.1129,則按預期工作。但如果我使用較新的2012.3.1114,它不會。不知道這是一個錯誤還是行爲改變。

回答

0

經過很多努力,我發現原因似乎是主網格重新綁定自動導致我觀察到的行爲。我可以通過處理主網格中的dataBinding事件來解決這個問題,並在其中檢查是否有任何細節數據源是髒的,如果是,則調用preventDefault。

下面是相關的代碼片段:

dataBinding: function (e) { 
       if (masterGrid.AreChangesPending()) { 
        e.preventDefault(); 
       } 
    } 

    AreChangesPending : function() { 
     var pendingChanges = false; 
     // I gave each detail div an id so that I can get a "handle" to it 
     $('div[id^="detail_"]').each(function (index) { 
      var dsrc = $(this).data("kendoGrid").dataSource; 
      $.each(dsrc._data, function() { 
       if (this.dirty == true || this.isNew()) { 
        pendingChanges = true; 
       } 
      }); 

      // For some reason, Kendo did not detect new rows in the isNew() 
      // call above, hence the check below 
      if (dsrc._data.length != dsrc._total) { 
       pendingChanges = true; 
      } 
     }); 

     return pendingChanges; 
    }