在jqGrid中手动执行取消添加、编辑和删除事件
Execute cancel add, edit and delete event manually in jqGrid
我使用 jqGrid 4.5.4
当我点击 jqGrid“inlinenav”中的添加按钮时,它会在网格中创建一行。
但如果我不小心点击了另一个网格行,“添加的行”就会消失,“inlinenav”编辑和删除按钮将停止工作。
要使按钮重新开始工作,我需要再次单击添加按钮并取消包含。
有没有办法让我在方法“onSelectRow”中手动执行取消添加、编辑和删除事件?
在我的代码下面:
jQuery("#" + p_gridName).jqGrid("GridUnload");
jQuery("#" + p_gridName).jqGrid({
data : p_dados,
datatype : "local",
sortable : true,
colNames : p_header,
colModel : p_descriptor,
rowNum : 20,
rowList : [20, 50, 100],
pager : '#p' + p_gridName,
recordpos : 'right',
viewrecords : true,
multisort : true,
sortorder : "desc",
width: screen.availWidth - (screen.availWidth * 3 / 100),
height : screen.availHeight - 300,
ignoreCase : true,
multiselect : false,
shrinkToFit : false,
caption: "-",
onSelectRow : function(ids) {
var aux = jQuery("#" + p_gridName).jqGrid('getRowData', ids);
valorChave = aux[p_primaryKey];
var $this = $(this);
$this.jqGrid('setGridParam', {
editurl : (ids === "new_row" ? 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName : 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName + '&chaveRegistro=' + valorChave)
});
},
editurl : 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName
});
jQuery("#" + p_gridName).navGrid('#p' + p_gridName, {
edit : false,
add : false,
del : function(valorChave){ return true },
refresh : false,
search : false
},{},{}, {
onclickSubmit : function (rp_ge, postdata) {
var keyValue = $(this).jqGrid("getCell", postdata, p_primaryKey);
return {chaveRegistro : keyValue};
},
afterSubmit : function (response, postdata) {
if (response != null && response.responseText != null) {
if (response.responseText.includes("OK")) {
alert(response.responseText);
return [true, "", ""];
}
else {
alert(response.responseText);
return [false, "", ""];
}
}
}
});
jQuery("#" + p_gridName).jqGrid('inlineNav', '#p' + p_gridName, {
edit : true, editicon : "ui-icon-pencil", //icone para edição
add : true, addicon : "ui-icon-plus", //icone para inclusão
save : true, saveicon : "ui-icon-disk", //icone para salvar
savetitle : "Salvar", //hint para salvar
cancel : true, cancelicon : "ui-icon-cancel", //icone para cancelar
canceltitle : "Cancelar", //hitn para cancelar
editParams : {
keys : false,
oneditfunc : null,
successfunc : function (response) {
if (response != null && response.responseText != null) {
if (response.responseText.includes("OK")) {
alert(response.responseText);
return true;
}
else {
alert(response.responseText);
return true;
}
}
}
},
addParams : {
useDefValues : true, addRowParams : {
successfunc : function (response) {
if(response.responseText.includes("OK")) {
alert(response.responseText);
return true;
}
else {
alert(response.responseText);
return true;
}
}
}
}
});
我不确定这个选项在 jqGrid 4.5.4 中是否可用,但是如果您将选项 restoreAfterSelect 设置为 false,则可以禁用此行为。此选项默认为真:
jQuery("#" + p_gridName).jqGrid('inlineNav', '#p' + p_gridName, {
...
restoreAfterSelect : false,
...
});
P.S。 (edit) 刚刚检查 - 这个选项在 4.5.4 中可用,你可以使用它
我使用 jqGrid 4.5.4
当我点击 jqGrid“inlinenav”中的添加按钮时,它会在网格中创建一行。
但如果我不小心点击了另一个网格行,“添加的行”就会消失,“inlinenav”编辑和删除按钮将停止工作。
要使按钮重新开始工作,我需要再次单击添加按钮并取消包含。
有没有办法让我在方法“onSelectRow”中手动执行取消添加、编辑和删除事件?
在我的代码下面:
jQuery("#" + p_gridName).jqGrid("GridUnload");
jQuery("#" + p_gridName).jqGrid({
data : p_dados,
datatype : "local",
sortable : true,
colNames : p_header,
colModel : p_descriptor,
rowNum : 20,
rowList : [20, 50, 100],
pager : '#p' + p_gridName,
recordpos : 'right',
viewrecords : true,
multisort : true,
sortorder : "desc",
width: screen.availWidth - (screen.availWidth * 3 / 100),
height : screen.availHeight - 300,
ignoreCase : true,
multiselect : false,
shrinkToFit : false,
caption: "-",
onSelectRow : function(ids) {
var aux = jQuery("#" + p_gridName).jqGrid('getRowData', ids);
valorChave = aux[p_primaryKey];
var $this = $(this);
$this.jqGrid('setGridParam', {
editurl : (ids === "new_row" ? 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName : 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName + '&chaveRegistro=' + valorChave)
});
},
editurl : 'EdicaoInLineAction.do?method=salvarDadosGrid&contentName=' + p_contentName
});
jQuery("#" + p_gridName).navGrid('#p' + p_gridName, {
edit : false,
add : false,
del : function(valorChave){ return true },
refresh : false,
search : false
},{},{}, {
onclickSubmit : function (rp_ge, postdata) {
var keyValue = $(this).jqGrid("getCell", postdata, p_primaryKey);
return {chaveRegistro : keyValue};
},
afterSubmit : function (response, postdata) {
if (response != null && response.responseText != null) {
if (response.responseText.includes("OK")) {
alert(response.responseText);
return [true, "", ""];
}
else {
alert(response.responseText);
return [false, "", ""];
}
}
}
});
jQuery("#" + p_gridName).jqGrid('inlineNav', '#p' + p_gridName, {
edit : true, editicon : "ui-icon-pencil", //icone para edição
add : true, addicon : "ui-icon-plus", //icone para inclusão
save : true, saveicon : "ui-icon-disk", //icone para salvar
savetitle : "Salvar", //hint para salvar
cancel : true, cancelicon : "ui-icon-cancel", //icone para cancelar
canceltitle : "Cancelar", //hitn para cancelar
editParams : {
keys : false,
oneditfunc : null,
successfunc : function (response) {
if (response != null && response.responseText != null) {
if (response.responseText.includes("OK")) {
alert(response.responseText);
return true;
}
else {
alert(response.responseText);
return true;
}
}
}
},
addParams : {
useDefValues : true, addRowParams : {
successfunc : function (response) {
if(response.responseText.includes("OK")) {
alert(response.responseText);
return true;
}
else {
alert(response.responseText);
return true;
}
}
}
}
});
我不确定这个选项在 jqGrid 4.5.4 中是否可用,但是如果您将选项 restoreAfterSelect 设置为 false,则可以禁用此行为。此选项默认为真:
jQuery("#" + p_gridName).jqGrid('inlineNav', '#p' + p_gridName, {
...
restoreAfterSelect : false,
...
});
P.S。 (edit) 刚刚检查 - 这个选项在 4.5.4 中可用,你可以使用它