我想在不使用jqgrid中的模式弹出窗口的情况下创建自定义消息。有没有办法禁用它?或者有没有办法改变模态的内容?
答案 0 :(得分:2)
你能更具体一点吗?如果你想要你自己的模态对话框,你可以添加一个事件处理程序(例如,在一个Edit按钮上),当被触发时会打开你自己的自定义对话框。您可以将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团队滚动补丁以禁用警报。
答案 1 :(得分:0)
在css文件中的某处搜索 div.loadingui div.msgbox {...} 。我认为编辑这个css类可以完成工作。
答案 2 :(得分:0)
我知道这不属于主题,但您是否尝试过SlickGrid http://wiki.github.com/mleibman/SlickGrid/examples。
答案 3 :(得分:0)
我已经在运行时更改了模态弹出窗口的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); }
}
答案 4 :(得分:0)
是的,你可以做到。您可以将模态框的可见属性设置为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, ""];
}