2013-01-08 38 views
3

我有一個kendo網格,裏面有數據和多個列(比如第1,2和3列)。需要能夠根據彼此的值來編輯(或防止編輯)第1,2,3列。這是特定行。編輯網格時,如何按行禁用特定字段?

例如,如果第1列(日期)是<第2列(日期),則不允許編輯第3列。

我知道這很簡單,可以禁用或啓用整個列,但我的要求是行特定的。因此第1行可以啓用第3列,第2行可以禁用第3列。

有什麼想法?

+0

要求澄清:是'影響'cell'或整個'row'的版本readonly'公式?在你的例子中,第3列不允許被編輯(取決於第1列和第2列),但第1列和第2列會發生什麼情況,是否可以編輯它們?最一般的解決方案可能需要在一行中的單元格之間建立依賴關係圖,甚至檢測循環依賴關係(應將其視爲錯誤)。 – OnaBai

+0

沒有自定義編輯器的替代解決方案:http://stackoverflow.com/questions/20881484/make-cell-readonly-in-kendo-grid-if-condition-is-met/20881973#20881973 –

回答

13

我的建議是創建一個驗證條件的編輯器函數。這當然有缺點,這是一個特設的解決方案,但是...它的工作原理!

讓具有以下項(數據源的數據):

var entries = [ 
    { id:1, col1: new Date(2012, 11, 31), col2: new Date(2013, 0, 1), col3: "Yes" }, 
    { id:2, col1: new Date(2013, 0, 1), col2: new Date(2013, 0, 1), col3: "No" }, 
    { id:3, col1: new Date(2013, 0, 2), col2: new Date(2013, 0, 1), col3: "No" } 
]; 

然後我定義網格爲:

var grid = $("#grid").kendoGrid({ 
    dataSource : { 
     data : entries, 
     schema : { 
      model: { 
       id : "id", 
       fields: { 
        col1: { type: "date"}, 
        col2: { type: "date"}, 
        col3: { editable: true } 
       } 
      } 
     }, 
     pageSize: 3 
    }, 
    columns : [ 
     { field: "col1", title: "Col1", format: "{0:yyyy-MM-dd}" }, 
     { field: "col2", title: "Col2", format: "{0:yyyy-MM-dd}" }, 
     { field: "col3", title: "Edit?", editor: checkAndEdit } 
    ], 
    editable : "incell", 
    navigatable: true, 
    pageable : true 
}).data("kendoGrid"); 

col1col2是日期和col3是一個字符串,它可以編輯當且僅當col1小於col2

我定義checkAndEdit功能如下:

function checkAndEdit(container, options) { 
    if (options.model.col1 < options.model.col2) { 
     $('<input data-bind="value:' + options.field + '" ' + 
       'data-format="' + options.format + '" ' + 
       'class="k-input k-textbox"/>') 
       .appendTo(container); 
    } else { 
     grid.closeCell(container); 
    } 
} 

我在哪裏生成相應input字段如果col1 < col2否則調用closeCell用於退出edit模式。

你可以看到它運行here

+0

看來這隻適用於「盒內」。在進行「內聯」時,編輯器只會被觸發一次,因此您不能根據其他內容更改一個單元格。 –

2

保持簡單隻需要使用(你在你的網格列綁定)

[Editable(false)]
public string ob_name { get; set; }

在其中使用您的劍道UI電網的服裝類。

有關詳細信息,你也可以see this

+0

通過使用數據註釋,爲我工作,thanx @atik sarker :) – gardarvalur

相關問題