[英]Prevent editing of a specific editable row's cell in inline-edit mode
在jqGrid中,我正在以內聯編輯模式工作。
當用戶嘗試編輯一行(單擊筆操作圖標)時,我想阻止( {editable: false}
)根據此行中另一個單元格的內容編輯特定的可編輯行的單元格。
grid.setColProp('myColumn',{editable:false});
對我不好,因為這會禁用所有網格行中'myColumn'的編輯,我只想在當前編輯的行上應用它。
editable
屬性的值對於所有行都是通用的,但該值僅由初始化內聯編輯的editRow
方法使用。 因此,您可以相對於setColProp
動態更改editable
屬性的值(如答案中所示 )。 在每次調用editRow
之前設置正確的editable
屬性值非常重要。 在答案中,您可以看到相應的代碼示例和演示。
更新 :如果您使用formatter: "actions"
那么您可以“子類化” onclick
處理程序中調用的$.fn.fmatter.rowactions
。 您可以在下面看到相應代碼的示例
var orgRowActions = $.fn.fmatter.rowactions;
$.fn.fmatter.rowactions = function (rid, gid, act, pos) {
var $grid = $("#" + $.jgrid.jqID(gid)),
rowData = $grid.jqGrid("getLocalRow", rid),
isNonEditable = false,
result;
// we can test any condition and change
// editable property of any column
if (act === "edit" && parseFloat(String(rowData.tax)) <= 20) {
$grid.jqGrid("setColProp", "note", {editable: false});
isNonEditable = true;
}
result = orgRowActions.call(this, rid, gid, act, pos);
if (isNonEditable) {
// reset the setting to original state
$grid.jqGrid("setColProp", "note", {editable: true});
}
return result;
}
你會在這里找到相應的演示。 僅當“tax”列中的值<= 20時,“note”列才可在演示中編輯:
如果你有datatype: "json"
或datatype: "xml"
而不使用loadonce: true
你應該將getLocalRow
的調用替換為上面代碼中getRowData
或getCell
的調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.