任何人都可以帮助我在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
相同。旧答案为您提供了回调用法的示例。
指定内联编辑的successfunc
或errorfunc
回调的另一种方法是使用 $.jgrid.inlineEdit
。
另一种方法是使用 jqGridInlineSuccessSaveRow
和 jqGridInlineErrorSaveRow
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
列的存在只会带来更多问题,尤其是在您允许编辑数据的情况下。