1

jqgrid でインライン編集した後に ajax 応答を取得するのを手伝ってくれる人はいますか? 以下は jqgrid の私のコードで、インライン編集後に ajax の成功応答を取得する方法がわかりません。

「loadComplete」、「gridComplete」、「afterComplete」を試しました。これらは、グリッドがロードされた後にのみ機能しますが、セルを編集した後では機能しません。

jQuery('#grid').jqGrid({
            "width": "640",         
            "hoverrows": true,
            "viewrecords": false,
            "gridview": true,
            "url": "es.php",
            "editurl": "es.php",
            "cellurl": "es.php",
            "rowNum": 10,
            "rowList": [10, 20, 30],
            "sortname": "id",
            "datatype": "json",
            "colModel": [{
                "name": "employee",
                "sortable": false,
                "index": "employee",
                "editable": true,
                "editrules": { required: true } 
            }, {
                "name": "age",
                "index": "age",
                "sortable": false,
                "editable": true,
                "editrules": { required: true } 
            }, {
                "name": "actions",
                "formatter": "actions",
                "editable": false,
                "sortable": false,
                "resizable": false,
                "delbutton" : false, 
                "fixed": true,
                "width": 60,
                "formatoptions": {
                    "keys": true,
                    "delbutton" : false, 
                    "delOptions": {}, 
                }
            }, {
                name: 'id',
                index: 'id',
                "key": true,
                hidden: true,
                viewable: true,
                editrules: {
                    edithidden: true
                },
                    "editable": false
                }
            ],
            "postData": {
                "oper": "fsgrid"
            },
            "prmNames": {
                "page": "page",
                "rows": "rows",
                "sort": "sidx",
                "order": "sord",
                "search": "_search",
                "nd": "nd",
                "id": "id",             
                "searchField": "searchField",
                "searchOper": "searchOper",
                "searchString": "searchString",
                "oper": "oper",
                "query": "grid",
                "addoper": "wsadd",
                "editoper": "wsedit",
                "excel": "excel",
                "subgrid": "subgrid",
                "totalrows": "totalrows",
            },
            "loadError": function(xhr, status, err) {
                try {
                    jQuery.jgrid.info_dialog(jQuery.jgrid.errors.errcap, '<div class="ui-state-error">' + xhr.responseText + '</div>', jQuery.jgrid.edit.bClose, {
                        buttonalign: 'right'
                    });
                } catch (e) {
                    alert(xhr.responseText);
                }
            },
            "pager": "#pager",
            beforeShowForm: function(form) {
              $(".ui-inline-del").remove();
            },
        }); 

         jQuery('#grid').jqGrid('navGrid', '#pager', {
                "edit": false,
                "add": true,
                "del": false,
                "search": false,
                "refresh": false,
                "view": false,
                "excel": false,
                "pdf": false,
                "csv": false,
                "columns": false
            });     

上記で、すべてが正常に機能しています。しかし、インライン編集が完了した後に ajax 応答を取得する方法がわかりません。それ以上に、私はjqgridに非常に慣れていません。私は非常に基本的なjqgridコードを使用していると思います。ですから、応答を得るために私に提案してください。

4

1 に答える 1

2

インライン編集を使用する方法は多数あります。内部でインライン編集を使用する formatter: "actions" を使用しますそのため、 内でインライン編集のオプションを指定できますformatoptions。たとえば、インライン編集後に成功応答を処理するには、editRowonSuccessのような同じパラメーターを持つコールバックを指定できます。コールバックは と同じように使用できます。古い回答は、コールバックの使用例を提供します。successfunconErrorerrorfunceditRow

successfuncまたはerrorfuncインライン編集のコールバックを指定するもう 1 つの方法は、 の使用です$.jgrid.inlineEdit

もう 1 つの方法は、jqGridInlineSuccessSaveRowおよびjqGridInlineErrorSaveRowjQuery イベントの使用です。

jQuery("#grid").bind("jqGridInlineSuccessSaveRow",
    function (e, jqXHR, rowid, options) {
        alert("successful server response:\"" + jqXHR.responseText + "\"");
        // in case of adding new row on the server you can return id
        // of the new row
        return [true, jqXHR.responseText];
    }
);

(コードをテストしていませんが、ここでエラーが発生していないことを願っています)。

あなたが投稿したコードへのいくつかの小さなコメント:beforeShowFormオプション jqGrid のリストからコールバックを削除できます。コールバックはフォーム編集の場合に使用でき、別の場所で使用する必要があります。

idもう 1 つ注意: jqGrid を正しく入力すると、不要な非表示の列を削除できます。jqGrid がグリッドのすべての行(要素)にid属性を割り当てることを理解することが重要です。属性の値は行 ID です。非表示の列の存在は、特にデータの編集を許可する場合にのみ、より多くの問題を引き起こす可能性があります.<tr>idid

于 2013-10-01T09:43:51.607 に答える