2013-04-09 64 views
3

我正在使用kendo網格,並在編輯一行時檢查該行是否可編輯或不可編輯。如何使選定的行不可編輯,如果它不可編輯。我正在執行網格的edit函數的檢查。防止編輯劍道網格中的一行?

代碼

$("#grid").kendoGrid({ 
    dataSource : ds, 
    selectable : "multiple", 
    sortable : true, 
    filterable : false, 
    reorderable: true, 
    scrollable : false, 
    toolbar : ["create"], 
    columns: [ 
       { field: "event", width: "120px", title: "Event Type"}, 
       { field: "event_id", width: "120px", title: "Event ID"}, 
       { field: "addr_no_or_type", width: "120px", title:"Address"}, 
       { field: "event_rate", width: "100px", title: "Rate"}, 
       { field: "sched_date", width: "100px", title: "Scheduled"}, 
       { field: "complete_date", width: "100px", title:"Completed"}, 
       { field: "serial_no", width: "100px", title: "Serial #"}, 
       { command: ["edit", "destroy"], title: "Options", width: "170px"} 
      ], 
    editable: "inline", 
    edit : function(e){ 
     selectedRowIndex  = $("#grid").data("kendoGrid").select().index(); 
     if (selectedRowIndex >= 0) { 
      var grid   = $("#grid").data("kendoGrid"); 
      var selectedItem = grid.dataItem(grid.select()); 
      var slno   = selectedItem.serial_no; 
      if(slno!=0){ 
       grid.cancelRow(); 
      } 
     } 
    } 
}); 

但是當我使用這個我越來越控制檯下面的錯誤。

Uncaught TypeError: Cannot call method 'delegate' of null 

有人可以提出一種方法來解決它。謝謝。

+0

基本上我會建議,以防止編輯使用dataBound事件,但它取決於當前的網格配置 - 請你分享網格代碼? – 2013-04-09 05:51:07

+0

我編輯了代碼。你可以看它 – 2013-04-09 06:08:43

+0

嘗試谷歌搜索_KendoUI只讀行_ – OnaBai 2013-04-09 07:16:42

回答

6

在目前的情況下,我會建議使用數據綁定事件在數據源迭代view數據,並檢查當前記錄遇見給定的條件來禁用它的編輯按鈕:

function onDataBound(e) { 
    //this solution makes all rows editable/not editable initially 
    var grid = e.sender; 
    var data = grid.dataSource.view(); 

    for (var i = 0; i < data.length; i++) { 
     //check your custom condition 
     if (data[i].OrderID % 2 == 0) { 
      var editButton = grid.tbody.find("tr[data-uid='" + data[i].uid + "'] .k-grid-edit"); 
      editButton.addClass("k-state-disabled").removeClass("k-grid-edit"); 
      //or 
      //grid.tbody.find("tr[data-uid='" + data[i].uid + "'] .k-grid-edit").remove(); 
     } 
    } 
} 
+0

應該作爲答案作爲! – billybob 2013-10-15 14:01:07

0

同意,甚至我實現了通過更改事件排行殘疾功能。這裏是代碼:

function onRowSelect(val) { 
    var curCell = $("#abc").find(".k-state-selected"); 
    if (curCell[0].innerText.indexOf('ABCD')>-1) { 
     curCell[0].disabled = true; 
    } 

... 


@(Html.Kendo().Grid<xyz>() 
.Name("abc") 
.Selectable() 
.Events(e=>e.Change("onRowSelect"))