2

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);
            }
        }
    }
});
4

0 に答える 0