jqGrid では、インライン編集モードで作業しています。
ユーザーが行を編集しようとすると (ペン アクション アイコンをクリック) {editable: false}
、この行の別のセルのコンテンツに基づいて、特定の編集可能な行のセルの編集を防止 () します。
grid.setColProp('myColumn',{editable:false});
これは、すべてのグリッドの行で「myColumn」の編集を無効にし、現在編集されている行にのみ適用したいため、私には適していません。
jqGrid では、インライン編集モードで作業しています。
ユーザーが行を編集しようとすると (ペン アクション アイコンをクリック) {editable: false}
、この行の別のセルのコンテンツに基づいて、特定の編集可能な行のセルの編集を防止 () します。
grid.setColProp('myColumn',{editable:false});
これは、すべてのグリッドの行で「myColumn」の編集を無効にし、現在編集されている行にのみ適用したいため、私には適していません。
プロパティの値はすべての行で共通ですが、値はインライン編集を初期化するメソッドeditable
によってのみ使用されます。したがって、プロパティの値を動的に変更できます(回答のように)。を呼び出すたびに、プロパティの正しい値を設定することが重要です。回答では、対応するコード例とデモを見ることができます。editRow
editable
setColProp
editable
editRow
UPDATED : 使用すると、呼び出されたハンドラーformatter: "actions"
を「サブクラス化」できます。以下に、対応するコードの例を示します$.fn.fmatter.rowactions
onclick
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;
}
対応するデモはこちらにあります。「税金」列の値が 20 以下の場合にのみ、デモで「メモ」列を編集できます。
を使用する場合、datatype: "json"
またはdatatype: "xml"
使用しない場合は、上記のコードでの呼び出しをまたはの呼び出しloadonce: true
に置き換える必要があります。getLocalRow
getRowData
getCell