あなたが必要とするものは可能であり、それほど複雑ではありません。非常にold demoをthe answerから見てください。 name: 'myColName'
の列があり、の後に編集または追加のフォームに情報を挿入する場合は、その列の情報を挿入するだけです。フォームには<table>
が含まれています。したがって、1つまたは2つの子<td>
要素(ラベルのセルとデータのセル)を持つ<tr>
を挿入する必要があります。フォームの他のデータと一致させるには、<tr>
要素にclass="FormData"
を使用する必要があります。 、OK:(ラベルの列の)最初の<td>
要素はclass="CaptionTD ui-widget-content"
を有するべきであり、(変更の入力のためのデータの欄に)第二<td>
要素べきはclass="DataTD ui-widget-content"
を有する:
を更新し { // edit options
recreateForm: true,
beforeShowForm: function ($form) {
var $formRow = $form.find('#tr_Name'); // 'Name' in the column name
// after which you want insert the information
$('<tr class="FormData"><td class="CaptionTD ui-widget-content">' +
'<b>Label:</b>' + // in the line can be any custom HTML code
'</td><td class="DataTD ui-widget-content">' +
'<span></span>' + // in the line can be any custom HTML code
'</td></tr>').insertAfter($formRow);
}
}
今私はあなたが望むものを理解しています。問題は、addedrowがeditGridRowのオプションで新しい行を追加するためにaddRowData
が呼び出されることです。したがって、reloadAfterSubmit: false
オプションを使用する場合は、新しい行を'first'
またはグリッドの'last'
として追加できます。 'after'
または'before'
のパラメータをaddRowData
にするには、新しい行が挿入される前の行のIDを指定する1つ以上のパラメータでメソッドaddRowData
を呼び出す必要があります。
jqGridのソースコードを変更した場合にのみ、要件を実装できるように見えます。実際には、jqGridのソースコードを変更することなく、非常に小さなコードとで要件を実装することができます。
あなたは変数にaddRowData
の元の実装へのポインタを保存して実装して それを上書きすることができます:
var oldAddRowData = $.fn.jqGrid.addRowData;
$.jgrid.extend({
addRowData: function (rowid, rdata, pos, src) {
if (pos === 'afterSelected' || pos === 'beforeSelected') {
if (typeof src === 'undefined' && this[0].p.selrow !== null) {
src = this[0].p.selrow;
pos = (pos === 'afterSelected') ? 'after' : 'before';
} else {
pos = (pos === 'afterSelected') ? 'last' : 'first';
}
}
return oldAddRowData.call(this, rowid, rdata, pos, src);
}
});
コード上記addRowData
の2つの新しいオプションを導入:'afterSelected'
と私は以下の提案します'beforeSelected'
。 jqGridを作成する前にコードをインクルードすると、カスタムaddRowData
を使用してグリッドが作成されるため、フォームの追加のオプションとして新しいaddedrow: 'afterSelected'
またはaddedrow: 'beforeSelected'
を使用できます。
The demoは、その提案が有効であることを示しています。あなたはデモの他の多くのコードを見てはいけません。フォーム編集の現在の実装はローカル編集をサポートしていませんが、私はデモでこれを行う古いコードを使用しました。したがって、デモのコードは比較的長くなりますが、私がデモンストレーションしたい部分は簡単に内部を見つけることができます。
オレグの質問にお返事ありがとうございます。しかし、私はこれがまさに私が望むものではないと思う。 フォームが送信された後にグリッド内に行を挿入する必要がありますが、その行をグリッド内の任意の位置に挿入できる必要があります。これは** addRowData **メソッドに似ています。 –
@RicardoDuarte:あなたが必要としていることを理解しました。私は答えを更新しました。 – Oleg
これは私が欲しいものです。この問題で私を助けてくれてありがとう。貴重な仕事をしています。あなたの提案を実装し、ここに戻って結果を投稿します。 –