私はjqGridを使用してinlineNav
いるので、ユーザーは行をローカルで編集/追加/削除し、終了時にすべての変更をサーバーに送信できます。複数の新しい行をローカルでグリッドに追加できるようにしたいのですが、他の要件により、新しく追加された行には、デフォルトではなく一意のIDが必要ですnew_row
。また、外部キーの制約のため、ajax呼び出しを使用して追加直後に新しい行を永続化することはできません。次のことを試みましたが、ID値は変更されません。
<input type="hidden" id="newRowIndex" />
$("#thisGrid").jqGrid('inlineNav', '#thisGridPager', {
edit: false,
addtext: "Add",
save: false,
cancel: false,
addParams: {
position: 'last',
addRowParams: {
keys: true,
oneditfunc: function (rowid) {
var newRowIndex = $("#newRowIndex").val();
if (!newRowIndex)
newRowIndex = 1;
$("#thisGrid").jqGrid('setCell', rowid, 'id', rowid + "_" + newRowIndex, '', '');
newRowIndex++;
$("#newRowIndex").val(newRowIndex);
}
}
}
});
new_row_1
新しく追加された行のIDをに設定し、新しく追加された各行のインデックスをインクリメントしたいと思います。これは可能ですか?もしそうなら、どのように?
解決
ディーンの答えに加えて、私はそれがのでそれを行うと機能しないことを発見しましoneditfunc
たaddRowParams
。jqGridのafterInsertRow
イベントを使用すると機能することがわかりました。
afterInsertRow: function (rowid, rowdata, rowelem) {
if (rowid == 'new_row') {
var newRowIndex = $("#newRowIndex").val();
if(!newRowIndex)
newRowIndex = 1;
var newRowId = rowid + "_" + newRowIndex;
$("#new_row").attr('id', newRowId);
newRowIndex++;
$("#newRowIndex").val(newRowIndex);
}
}