jQGrid、追加ダイアログで列を編集可能にし、(インライン)編集中には編集できないようにする方法

jQGrid, how to make a column editable in the add dialog but not during (inline) edits


質問 written by Oleg @2011-01-01 14:59:05Z

: 8 : 1 : 28

新しい行を追加するときにのみ編集可能にしたい列を持つjQGridがあります。

編集と追加の両方がダイアログで行われているときにこれを行う方法の例を見ましたが、インライン編集でこれを行う方法はありますか?

beforeShowForm:でgrid.setColProp()を使用してみましたが、これは機能しません(列は読み取り専用のままで、追加ダイアログには表示されません)。

ダイアログベースの列の有効化/無効化の例:
http://www.ok-soft-gmbh.com/jqGrid/CustomFormEdit.htm

回答 1 written by Community @2017-05-23 12:25:45Z
18

あなたは私の昔の答え( これこれ )からの例を使っているので、私はあなたの質問にも答えるべきだと感じます。

古い例では、[追加]または[編集]ダイアログで変更可能すべてのフィールドに、プロパティeditable:true 追加ダイアログにのみ表示されるべきフィールドは、 beforeShowFormイベントハンドルの内側に隠されます。 同様に、editRowメソッドの呼び出しの前に一時的にいくつかのフィールドをeditable:falseに切り替え、呼び出しの直後にeditable:trueにリセットすることがeditable:trueます。

onSelectRow: function(id) {
    if (id && id !== lastSel) {
        grid.jqGrid('restoreRow',lastSel);
        var cm = grid.jqGrid('getColProp','Name');
        cm.editable = false;
        grid.jqGrid('editRow', id, true, null, null, 'clientArray');
        cm.editable = true;
        lastSel = id;
    }
}

あなたはこれがここに住んでいるのを見ることができます

更新: 無料のjqGridはコールバック関数としてeditable可能を定義することができます。 ウィキの記事をてください 一部の行で列を編集可能にし、他の行では編集不可にすることができます。

コメント 1

素晴らしい、Olegさん、どうもありがとうございます。

written by David @2010-11-30 17:51:50Z

コメント 2

@ user524257:どういたしまして!

written by Oleg @2010-11-30 18:04:49Z

コメント 3

すばらしいです!jQGridに関するブログ投稿、出版物、その他のスタックに関する回答はありますか?

written by Sergey Metlov 2011 @2011-09-21 06:51:43Z

コメント 4

@DotNET Ninja:現在私はstackoverflowとtrirandフォーラムに答えを書いています。次回も時間を見つけて、jqGridを効果的に使用する方法を説明したブログまたは記事、あるいは本を書くことを願っています。

written by Oleg @2011-09-21 07:45:42Z

コメント 5

@Oleg:1つの列をすべての行で編集できないようにしたい場合、これはうまくいくようです。特定の列を他の行ではなく一部の行に対して編集可能にする方法はありますか?周りを見回したところ、探しているものに近いものは見つからなかった。前もって感謝します。

written by RRK @2013-04-30 00:31:50Z