2016-02-22 42 views
0

在asp.net mvc視圖中,我有Kendo UI樹視圖和Kendo UI網格。樹形視圖中的每個複選框在網格的ID列中都具有相同的id值。每當我在treeview中取消選中複選框時,我想刪除具有該id值的網格中的對應行。 ID是網格中的一列。以下是我的代碼:如何根據列值刪除kendo ui網格行

下面的函數是由取消選中行動的樹狀

function onCheck() { 
       var checkedNodes = [], 
        treeView = $("#treeview").data("kendoTreeView"), 

       var myNodes = treeView.dataSource.view(); 

       for (var i = 0; i < myNodes.length; i++) { 
        var children = myNodes[i].children.view(); 
        if (children) { 
         for (var j = 0; j < children.length; j++) { 

          if ((typeof children[j].checked !== undefined) && (!children[j].checked)) { 
           alert("You unchecked " + children[j].id); //This shows the correct id value 
           var dataItem = $("#grid").data("kendoGrid").dataSource.get(children[j].id); 
           $("#grid").data("kendoGrid").dataSource.remove(dataItem); 
          } 
         } 
        } 
       } 

下面執行時用於電網代碼:

 $("#grid").kendoGrid({ 
     pageable:true, 
     dataSource: dataSource, //comes as json from a url 
     schema: { 
      model: { 
       id: "ID" 
      } 
     }, 
     pageSize:3, 


     columns: [ 
      { 
       hidden: true, 
       field: "ID" 

      }, 
      { 
       field: "MyFileName" 
      }, 
     }); 

當我調試時,DataItem的在var dataItem = $(「#grid」)。data(「kendoGrid」)。dataSource.get(children [j] .id);沒有定義。但是,檢索到的樹視圖的id和網格中的id匹配。這是我看到的錯誤:0x800a138f - JavaScript運行時錯誤:無法獲取未定義或空引用的屬性'uid'

很明顯,沒有網格行被刪除。

感謝

+0

'dataSource.get'是依靠模型......你能提供所有相關的代碼? (網格和TreeView定義) –

回答

1

試試這個在您的複選框的更改事件:

​​

filter方法將當前id找到在網格中的相關行。使用grid的removeRow() insted直接從dataSource中刪除。

Demo

+0

該複選框是treeview的一部分,它是一個單獨的控件,而不是網格的一部分。 – Massey