在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代码。所以请建议我得到答复。
答案 0 :(得分:2)
有多种方法可以使用内联编辑。您使用内部使用内联编辑的formatter: "actions"。因此,您可以在formatoptions
内指定内联编辑的选项。例如,要在内联编辑后处理成功响应,您可以指定onSuccess
回调,它具有与successfunc
editRow相同的参数。回调onError
的使用方式与errorfunc
的{{1}}相同。 The old answer为您提供了回调用法的示例。
指定内联编辑的editRow
或successfunc
回调的另一种方法是使用errorfunc
。
另一种方法是使用$.jgrid.inlineEdit
和jqGridInlineSuccessSaveRow
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
列的存在只会导致更多问题,尤其是在您允许编辑数据的情况下。