我想在jqgrid中创建一个自定义消息,而不使用模态弹出窗口。有没有办法禁用它?或者有没有办法更改模态框的内容?
我想在jqgrid中创建一个自定义消息,而不使用模态弹出窗口。有没有办法禁用它?或者有没有办法更改模态框的内容?
你能更具体一些吗?如果你想要自己的模态对话框,你可以添加一个事件处理程序(例如在编辑按钮上),当其被触发时,就会打开你自己的自定义对话框。你可以使用 jQuery UI 对话框来实现此目的,并将其打开到你自己的自定义表单。
更新
检查了 jqGrid 源代码后,info_dialog
是用于显示这个特定对话框的函数。还有一个单独的调用来显示“正在加载…”弹出窗口。目前看来,似乎没有简单的方法来禁用 info_dialog
。但是,你可以修改 jqGrid 源代码来实现你需要的功能。你可以选择:
立即从 info_dialog
返回 - 这可能是极端的,因为它可能报告其他你需要的错误 - 或者,
找到并注释掉显示此特定 ajax 错误的调用。这需要一些试错,但由于此函数仅被调用 18 次,因此你不需要花费太多时间来追踪。事实上,首先注释掉这个实例,因为它是从一个 ajax 调用的 error
函数中调用的:
info_dialog(a.jgrid.errors.errcap,e.status+" : "+e.statusText+"<br/>"+u,a.jgrid.edit.bClose);
显然,这样的修改是最后的手段,但一旦它起作用,你可以考虑为 jqGrid 团队制作一个补丁来禁用警报。
我已经在运行时更改了模态弹出窗口的z-index,一旦您可以访问它,您可以进行任何自定义。
editoptions: { size: 20, maxlength: 10,
dataEvents: [
{ type: 'keypress',
fn: function (e) {
if (e.keyCode == 13) {
**$("#info_dialog").css('z-index', '100000');**
}
}
}
]
} }
另外,如果您可以在其他地方执行它,例如在服务器响应错误时
onCellSelect: function (rowid, iCol, aData) {
currentRow = rowid;
if (rowid && rowid !== lastsel) {
if (lastsel) jQuery('#ppGrid').jqGrid('restoreRow', lastsel);
$("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError);
lastsel = rowid;
}
else if (rowid && rowid === lastsel)
{ $("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError); }
}
是的,你可以做到。你可以将模态框的可见属性设置为false [$("#info_dialog").visible(false);
],然后你可以调用任何你自定义的模态框。
editrules: { custom: true, custom_func: validate_edit }
function validate_edit(posdata, colName) {
var message = "";
if (posdata != '' && $.isNumeric(posdata))
return [true, ""];
if (posdata == '')
message = colName + " field is required"
if (!$.isNumeric(posdata))
message = posdata + " is not a number";
alert(message);
$("#info_dialog").visible(false);
return [false, ""];
}
我知道这跟主题无关,但你试过SlickGrid吗?https://github.com/mleibman/SlickGrid/wiki/examples