jqgrid内联编辑获取ajax成功响应

时间:2013-10-01 08:27:46

标签: jquery jqgrid jqgrid-formatter jqgrid-inlinenav

在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代码。所以请建议我得到答复。

1 个答案:

答案 0 :(得分:2)

有多种方法可以使用内联编辑。您使用内部使用内联编辑的formatter: "actions"。因此,您可以在formatoptions内指定内联编辑的选项。例如,要在内联编辑后处理成功响应,您可以指定onSuccess回调,它具有与successfunc editRow相同的参数。回调onError的使用方式与errorfunc的{​​{1}}相同。 The old answer为您提供了回调用法的示例。

指定内联编辑的editRowsuccessfunc回调的另一种方法是使用errorfunc

另一种方法是使用$.jgrid.inlineEditjqGridInlineSuccessSaveRow jQuery事件:

jqGridInlineErrorSaveRow

(我没有测试代码,但我希望我在这里没有错误。)

您发布的代码的一些小评论:您可以从选项列表jqGrid中删除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]; } ); 回调。可以在表单编辑的情况下使用回调,它应该在其他地方使用。

还有一句话:如果正确填写jqGrid,您可以删除不需要的隐藏beforeShowForm列。重要的是要了解jqGrid将id属性分配给网格的每一行(到id元素)。 <tr>属性的值是rowid。隐藏id列的存在只会导致更多问题,尤其是在您允许编辑数据的情况下。