jqgrid でインライン編集を使用しようとしていますが、position = last を設定すると新しい行を追加する際に問題が発生します。私のグリッドには最初はレコードがありません。「新しい行」を初めてクリックすると、機能します。[保存] をクリックすると、データが Web サービスにポストされます。しかし、「新しい行」をもう一度クリックすると、以前に追加した行が編集モードになるため、複数の行を追加できません。私のコードは以下です。任意の支援をいただければ幸いです:)
これをもう少し見てみると、新しい行は保存後にグリッドにコミット/受け入れられていないようです。グリッドを更新してから新しい行を追加すると、期待どおりに機能します。保存 Web サービスが呼び出された後、何かをする必要があるようです...
var airGrid = $("#tblAir");
airGrid.jqGrid({
datatype: function () {
$.ajax({
url: "MyTravelSrv.asmx/GetPlanAirfare",
data: JSON.stringify({ TravReqstId: 1234 }),
datatype: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
beforeSend: function () {
},
complete: function (jsondata, stat) {
if (stat == "success") {
airGrid[0].addJSONData(JSON.parse(jsondata.responseText).d);
}
},
error: function (e) {
var msg = JSON.parse(e.responseText);
alert(msg.Message);
}
});
},
colNames: ['ID', 'Date', 'Time', 'Preferred Airline', 'From', 'To'],
colModel: [{ name: 'id', index: 'id', hidden: true },
{ name: 'departDate', index: 'departDate', editable: true },
{ name: 'departTime', index: 'departTime', editable: true },
{ name: 'prefAirline', index: 'prefAirline', editable: true },
{ name: 'from', index: 'from', editable: true },
{ name: 'to', index: 'to', editable: true}],
pager: '#pager',
height: 60,
viewrecords: true,
editurl: 'MyTravelSrv.asmx/UpdatePlanAirfare'
});
airGrid.jqGrid('navGrid', "#pager", { search: false, edit: false, add: false, del: false });
airGrid.jqGrid('inlineNav', '#pager', {
addParams: { position: "last",
addRowParams: {
keys: true,
oneditfunc: function (rowid) {
//alert(rowid);
}
}
}
});