2013-08-01 94 views
2

超級簡單的概念!...必須編程設置一個網格,可編輯=假

在某一點上,我可編輯網格,(和細節網格),必須設置爲只讀...所以我想做這樣的事情:

var grid = $("#grid").data("kendoGrid"); 
grid.options.editable = false; 

當然,這並不工作,因爲它是太簡單......

感謝您的幫助!

回答

4

我會建議你有兩個網格:一個只讀和一個讀寫,但只有一個是可見的。兩者共享數據源定義,因此它們始終保持同步。當你想從一個變爲另一個時,你隱藏可見並顯示另一個。

示例:我創建了兩個網格,定義完全相同,只是不同之處在於一個隱藏,一個可見,一個可編輯,一個不可見。由於兩者共享同一個DataSource,所以它實際上是完美的,因爲改變其中一個頁面會改變另一個,編輯頁面,更新另一個頁面。

是這樣的:

1- CSS定義中使用的,用於切換的可見性:

.ob-hide { 
    display : none; 
} 

2-甲數據源定義:

var ds = new kendo.data.DataSource({ 
    transport : { 
     read : { 
      url: ... 
     }, 
     update : { 
      url: ... 
     }, 
     create : { 
      url: ... 
     }, 
     destroy : { 
      url: ... 
     } 
    }, 
    pageSize: 10, 
    schema : { 
     model: { 
      id : ..., 
      fields: { 
       id  : { type: '...' }, 
       ... 
      } 
     } 
    } 
}); 

接着兩個格柵:

$("#grid-editable").kendoGrid({ 
    editable: "inline", 
    dataSource : ds, 
    ... 
} 

$("#grid-not-editable").kendoGrid({ 
    editable: false, 
    dataSource: ds, 
    ... 
}); 

$("#grid-editable").addClass("ob-hide"); 

最後用於切換模式的功能:

function gridEditable() { 
    $("#grid-editable").removeClass("ob-hide"); 
    $("#grid-not-editable").addClass("ob-hide"); 
}); 

function gridNotEditable() { 
    $("#grid-editable").addClass("ob-hide"); 
    $("#grid-not-editable").removeClass("ob-hide"); 
}); 

看看它是運行在這裏:http://jsfiddle.net/OnaBai/bCEJR/2/

+0

這是一個很好的解決方案......我還得到了Kendo的解決方案,以銷燬可編輯網格,以便在非可編輯模式下重新創建......這是我沒有其他選擇的原因。再次感謝OnaBai。 – Tuthmosis

+0

有沒有其他的方式來實現這個?我不想添加兩個網格。我想禁用現有的網格。 – Agni

0

我在一個更好的工作作風,通過添加上所需要的元素disabled="disabled"。使用角度JSkendo,像魅力一樣工作,因爲通過將網格設置爲禁用不允許用戶編輯它。嘗試一下,可能沒有角度的工作!

相關問題