我有一個kendo網格,裏面有數據和多個列(比如第1,2和3列)。需要能夠根據彼此的值來編輯(或防止編輯)第1,2,3列。這是特定行。編輯網格時,如何按行禁用特定字段?
例如,如果第1列(日期)是<第2列(日期),則不允許編輯第3列。
我知道這很簡單,可以禁用或啓用整個列,但我的要求是行特定的。因此第1行可以啓用第3列,第2行可以禁用第3列。
有什麼想法?
我有一個kendo網格,裏面有數據和多個列(比如第1,2和3列)。需要能夠根據彼此的值來編輯(或防止編輯)第1,2,3列。這是特定行。編輯網格時,如何按行禁用特定字段?
例如,如果第1列(日期)是<第2列(日期),則不允許編輯第3列。
我知道這很簡單,可以禁用或啓用整個列,但我的要求是行特定的。因此第1行可以啓用第3列,第2行可以禁用第3列。
有什麼想法?
我的建議是創建一個驗證條件的編輯器函數。這當然有缺點,這是一個特設的解決方案,但是...它的工作原理!
讓具有以下項(數據源的數據):
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");
凡col1
和col2
是日期和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
看來這隻適用於「盒內」。在進行「內聯」時,編輯器只會被觸發一次,因此您不能根據其他內容更改一個單元格。 –
保持簡單隻需要使用(你在你的網格列綁定)
[Editable(false)]
public string ob_name { get; set; }
在其中使用您的劍道UI電網的服裝類。
有關詳細信息,你也可以see this
通過使用數據註釋,爲我工作,thanx @atik sarker :) – gardarvalur
要求澄清:是'影響'cell'或整個'row'的版本readonly'公式?在你的例子中,第3列不允許被編輯(取決於第1列和第2列),但第1列和第2列會發生什麼情況,是否可以編輯它們?最一般的解決方案可能需要在一行中的單元格之間建立依賴關係圖,甚至檢測循環依賴關係(應將其視爲錯誤)。 – OnaBai
沒有自定義編輯器的替代解決方案:http://stackoverflow.com/questions/20881484/make-cell-readonly-in-kendo-grid-if-condition-is-met/20881973#20881973 –