jqgrid inline edit get ajax success response



任何人都可以帮助我在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代码。所以请建议我得到回复。

联编辑的使用方式有很多种。您使用格式化程序:"操作",它在内部使用内联编辑。因此,您可以在formatoptions内指定内联编辑的选项。例如,要在内联编辑后处理成功响应,您可以指定具有相同参数的回调onSuccess如 editRow 的successfunc。回调onError的使用方式与errorfunc of editRow 相同。旧答案为您提供了回调用法的示例。

指定内联编辑的successfuncerrorfunc回调的另一种方法是使用 $.jgrid.inlineEdit

另一种方法是使用 jqGridInlineSuccessSaveRowjqGridInlineErrorSaveRow jQuery 事件:

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。回调可以在表单编辑的情况下使用,并且应该在另一个地方使用。

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

相关内容

最新更新