2

グリッド (jqGrid 4.5.2) でフォーム編集インライン編集を使用しています。編集可能な列を作成してフォームを開くと、値の代わりに HTML コードが表示されます。スクリーンショットは、私が何を意味するかを示しています。

HTML コードを使用した jqGrid

対応する行で編集可能なフィールドがない場合は、すべて問題ありません。どこかで読んだことがありますがForm、andはInline editing一緒に使用しませんが、漠然としか覚えていません。ただし、実際には、この特定の状況を除いて、すべて正常に機能しています。

Form Editingディスプレイを作成する前に、行全体を読み取り専用 (テキスト) にリセットできますか? 他の解決策はありますか?

-- 編集 1: オレグの答え ---

チェック/デバッグしてfunction restoreInline()、次の 2 つのことに気付きました。

  1. 連続した行 ID はありませんが、1,2,4,9 (DB の主キー) のようなものです。それらは一意ですが、いくつかの数字が間にありません。その結果、条件if ($t.p.savedRow[i].id == rowid)が満たされrestoreRowず、まったく呼び出されません。IDにそのようなギャップを設けることはできませんか? これまでに問題に気づいたことはありません。
  2. 最初の行とID「1」でクロスチェックを行いました。この場合$($t).jqGrid('restoreRow',rowid)は呼び出されますが、フィールドに「HTML コード」がまだ表示されます。

-- 編集 2 --

beforeShowFormで明示的に呼び出しjqGrid('restoreRow',rowid)ましたが、成功しませんでした。

4

1 に答える 1

2

フォーム編集では、編集フォームを初期化する前に行を呼び出す内部restoreInline(コードはこちらを参照) を呼び出す必要があります。restoreRow関数はの直後に呼び出されます (beforeInitDataを参照) 。たとえば、データを破棄する代わりに行を保存する必要がある場合は、beforeInitDataコールバック内でこれを行うことができます。

グリッドにIDの重複があると思います。したがって、の呼び出しはrestoreRowデータを復元しません。別の考えられる理由は jqGrid のバグである可能性がありますが、コードをデバッグして、restoreInline関数が呼び出されない理由、または行が復元されない理由を確認する必要があります。

于 2013-07-09T12:23:09.627 に答える