我正在使用 jqGrid 在我的 PHP 应用程序中显示表格。这一切都很好,但对于一个网格,我想使一个特定的列(称为“价格”)内联可编辑。
我想要的是,当出现问题时,我想发布我自己的 Jquery-UI 对话框屏幕。我认为最好是在 afterSubmitCell 事件中执行此操作,但问题是我无法阻止 jqGrid 显示带有服务器响应消息的默认对话框。
我有这样的事情:
$('#productslist').jqGrid('setGridParam', {
afterSubmitCell : function(serverresponse, rowid, cellname, value, iRow, iCol){
$('<div></div>').html('My own error message').dialog({
'title' : 'Some title',
'modal' : true,
'show' : 'blind',
'hide' : 'blind'
});
return [false, ''];
}
}).trigger('reloadGrid');
根据文档: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing
此事件必须返回一个带有 bool 值的数组,指示它是否成功,第二个是消息。此消息将显示在由 jqGrid 本身触发的 jquery-ui 对话框中。
问题是我想在发生错误时自定义对话框。但似乎没有太多可能性,或者我找不到它们。
我也尝试了事件 errorCell,但是只有当服务器没有给出 200 响应时才会触发该事件。或者当发生错误时我应该发送另一个响应代码 200 吗?对我来说似乎有点脏..
希望有人能帮助我!提前致谢。
最佳答案
我找到了一种无需修改源代码即可抑制内置对话框的方法,这显然是出于维护原因的最后手段。当内置对话框弹出时,它获得焦点,允许我们使用此事件再次关闭它
//Supresss jqGrid error dialog, called #info_dialog
$(document).on("focus", "#info_dialog", function () {
$("#info_dialog").hide();
});
或者,如果像我一样,唯一的问题是样式,并且您很乐意将 jqGrid 消息直接传递到您的对话框,您可以执行以下操作而不在其中添加任何内容:
//Supresss jqGrid error dialog, called #info_dialog
$(document).on("focus", "#info_dialog", function () {
var errorMessage = $("#infocnt").text();
$("#info_dialog").hide();
var $dialog = $('<div></div>')
.html(errorMessage)
.dialog({
autoOpen: true,
resizable: false,
buttons: { "Done": function () { $(this).dialog("close"); } },
title: 'Error'
});
$dialog.dialog('open');
});
关于javascript - jqGrid 使用 celledit 显示自己的错误对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236419/