我一直在四处寻找答案,但找不到足以回答我问题的答案...
我有一个 JQ Grid,它同时利用内联和表单编辑,并使用 blockUI 在服务器正在执行它的东西时显示“工作”消息。这对于表单编辑/添加/删除非常有效,因为我使用onclickSubmit到blockUI和afterSubmit到unblockUI。
问题来了,因为我找不到在Inline Edit中执行此操作的方法。任何人都可以提出实现这一目标的方法吗?
我想知道在哪里捕获单击“保存”图标时触发的事件(在请求发送到服务器之前),以便我可以阻止 UI:
以及从服务器发回响应时在哪里捕获触发的事件。
必须有一种方法可以使用下面的“editRow”或“saveRow”来执行此操作,但我无法确定在何处以及在哪些事件中放置诸如此类的命令。
奥列格回应后编辑
我应该在哪里调用“editRow”函数?如果我使用 onSelectRow,它会在选择行时对其进行操作——这会改变网格的行为——因为它现在不会在操作列中显示“保存”按钮。我可以在哪里放置“editRow”调用,以便在选择内联编辑图标时触发它?
$(document).ready(function() {
$('#jpgCustomers').jqGrid({
//url from wich data should be requested
url: '@Url.Action("Customers")',
//type of data
datatype: 'json',
//url access method type
mtype: 'POST',
serializeRowData: function(postData) {
$.blockUI({message: ("#working")});
return postData;
},
//columns model
//columns names
colNames: ['No.', 'Name', 'FullName', 'Description', 'Enabled', 'Email Address', 'Phone', 'Pager', 'Fax', 'Comments', ' '],
colModel: [
//displayed Columns
{ name: 'Number', index: 'Number', align: 'center', width: 40, editable: false, search: false },
{ name: 'LogonName', index: 'LogonName', align: 'left', width: 80, editable: true, search: true, stype: 'text', editrules: { required: true } },
{ name: 'FullName', index: 'FullName', align: 'left', width: 200, editable: true, search: true, stype: 'text', editrules: { required: true } },
{ name: 'Description', index: 'Description', align: 'left', width: 300, editable: true, search: true, stype: 'text' },
{ name: 'Enabled', index: 'Enabled', align: 'center', width: 80, editable: true, formatter: SFTPEnabledFormatter, unformat: SFTPEnabledUnformatter, edittype: 'select', editoptions: { value: '-2:Inherited;0:Disabled;1:Enabled' }, search: true, stype: 'select', searchoptions: { value: "-1:All;-2:Inherited;1:Enabled;0:Disabled" } },
//Hidden Columns
{ width: 60, name: 'Email', index: 'Email', hidden: true, editable: true, editrules: { required: true, edithidden: true }, editype: 'email' },
{ width: 60, name: 'Phone', index: 'Phone', hidden: true, editable: true, editrules: { required: false, edithidden: true, number: true, minValue: 0 }, editype: 'text' },
{ width: 60, name: 'Pager', index: 'Pager', hidden: true, editable: true, editrules: { required: false, edithidden: true, number: true, minValue: 0 }, editype: 'text' },
{ width: 60, name: 'Fax', index: 'Fax', hidden: true, editable: true, editrules: { required: false, edithidden: true, number: true, minValue: 0 }, editype: 'text' },
{ width: 120, name: 'Comments', index: 'Comments', align: 'left', hidden: true, editable: true, editrules: { required: false, edithidden: true }, edittype: 'textarea', editoptions: { rows: '3', cols: '60' } },
//Action column
{
name: 'myac',
width: 80,
fixed: true,
sortable: false,
resize: false,
editable: false,
search: false,
formatter: 'actions',
formatoptions: {
onSuccess: function(response) {
debugger;
$.unblockUI();
var jsonResponse = $.parseJSON(response.responseText);
if (jsonResponse.State != 'Success') {
return [false, jsonResponse.ResponseMessage];
} else {
return [true];
} },
onError :function(rowid, response, textStatus) {
debugger;
$.unblockUI();
},
keys: true,
delOptions: {
url: encodeURI('@Url.Action("DeleteCustomer")'),
onclickSubmit: function(params, posdata) {
$.blockUI({message: ("#working")});
},
afterSubmit: function(response, postData) {
$.unblockUI();
var jsonResponse = $.parseJSON(response.responseText);
if (jsonResponse.State != 'Success') {
return [false, jsonResponse.ResponseMessage];
} else {
return [true];
}
},
beforeShowForm: function(form) {
var dlgDiv = $("#delmod" + jpgCustomers.id);
CenterDialog(dlgDiv);
var sel_id = $("#DelData>td:nth-child(1)").text();
$("td.delmsg", form).html("Delete User <b>" + $("#jpgCustomers").jqGrid('getCell', sel_id, 'LogonName') + "</b>?");
}
}
}
}
],
reloadAfterSubmit: true,
//pager for grid
pager: $('#jpgpCustomers'),
//number of rows per page
rowNum: @(Model.RowsInCustomerGrid),
//initial sorting column
sortname: 'FullName',
//initial sorting direction
sortorder: 'asc',
//we want to display total records count
viewrecords: true,
//grid height
height: '100%',
//where to go on submit of edit/add
editurl: encodeURI('@Url.Action("EditCustomer")'),
//subgrid
});
});