2015-06-13 62 views
0

我在使用JavaScript動態編輯一些字段。但問題是Kendo的dataSource無法將它們識別爲已更改的單元格。如何標記Kendo Grid的單元格編輯?

網格的編輯模式是InCell

這是我目前的JavaScript代碼:

tablesGrid.tbody.find("input[type='checkbox']").each(function() { 
    $(this).on('change', function() { 
     var isChecked = $(this).prop('checked'); 
     var dataItem = tablesGrid.dataItem($(this).closest('tr')); 
     var currentTr = $(this).closest('tr'); 
     var i = $('td:visible', currentTr).index($(this).closest('td')); 
     var head = tablesGrid.thead.find('th:visible')[i]; 
     var headName = $(head).prop('dataset').field; 
     tablesGrid.editCell($(this).closest('td')); 
     dataItem[headName] = isChecked; 
     tablesGrid.refresh(); 
    }); 
}); 

如果你想知道這個代碼,我要指出,我使用的客戶端模板,以顯示覆選框。但我不希望用戶雙擊單元格進行編輯,一次將其放入編輯模式,另一次更改複選框。我不確定我是否使用了正確的解決方案,但JS代碼肯定有效。如果我點擊單元格並將其置於編輯模式,我會看到更改。

@(Html.Kendo().Grid<grid>() 
    .Name("grid") 
    .Columns(columns => 
    { 
     columns.Bound(x => x.field) 
      .ClientTemplate("<input type='checkbox' class='checkbox-inline' #=field? checked='checked':''# />") 
      .EditorTemplateName("Checkbox"); 

回答

0

那麼,我想出的最佳解決方案是,當鼠標進入該單元格時,將單元格置於編輯模式!所以,而不是問題中的整個JS代碼,我只是使用這個。

tablesGrid.bind('dataBound', function() { 

    tablesGrid.tbody.find('td').each(function() { 
     $(this).mouseenter(function() { 
      tablesGrid.editCell(this); 
     }); 
    }); 
}); 

請讓我知道,如果你有什麼更好或更有效的方式使用網格內編輯 複選框。

相關問題