2

jqGrid では、インライン編集モードで作業しています。

ユーザーが行を編集しようとすると (ペン アクション アイコンをクリック) {editable: false}、この行の別のセルのコンテンツに基づいて、特定の編集可能な行のセルの編集を防止 () します。

grid.setColProp('myColumn',{editable:false});これは、すべてのグリッドの行で「myColumn」の編集を無効にし、現在編集されている行にのみ適用したいため、私には適していません。

4

1 に答える 1

11

プロパティの値はすべての行で共通ですが、値はインライン編集を初期化するメソッドeditableによってのみ使用されます。したがって、プロパティの値を動的に変更できます(回答のように)。を呼び出すたびに、プロパティの正しい値を設定することが重要です。回答では、対応するコード例とデモを見ることができます。editRoweditablesetColPropeditableeditRow

UPDATED : 使用すると、呼び出されたハンドラーformatter: "actions"を「サブクラス化」できます。以下に、対応するコードの例を示します$.fn.fmatter.rowactionsonclick

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に置き換える必要があります。getLocalRowgetRowDatagetCell

于 2012-10-18T14:00:55.073 に答える