我有一个使用简单子网格的jqGrid (4.1.1)。当一个记录被加出来查看子网格时,就会弹出一个与我的正常记录不同的loadui。
我的当前配置是使用loadui: none,在beforeRequest事件上,我展示了自己的加载程序。
如果我在subGridBeforeExpand事件上使用我的自定义消息,它将显示我的消息以及默认消息。当加载完成时,我也不知道我会把div藏在哪里。subGridRowExpanded似乎不是合适的地方。
简言之:
提前感谢!
发布于 2011-08-01 15:48:51
如果您查看子网格的代码,您可以找到这里,即加载div将显示的位置,如
$("#load_"+ts.p.id).show();另一方面,显示标准(主)网格的代码看起来如下(参见这里):
beginReq = function() {
ts.grid.hDiv.loading = true;
if(ts.p.hiddengrid) { return;}
switch(ts.p.loadui) {
case "disable":
break;
case "enable":
$("#load_"+$.jgrid.jqID(ts.p.id)).show();
break;
case "block":
$("#lui_"+$.jgrid.jqID(ts.p.id)).show();
$("#load_"+$.jgrid.jqID(ts.p.id)).show();
break;
}
}因此,您可以看到设置loadui: "disable"只在主网格中使用。如何从代码中看到loadui的其他值,如"enable"或"block" (就像您使用的未知“无”值一样),将被解释为loadui: "disable"。
在我看来,是子网格中的一个bug。
作为解决办法,我建议您在创建jqGrid之后删除加载div。例如,如果网格的表元素有id="list",那么下一行:
$("div#load_list").remove();只需删除div,您将永远不会在主网格和子网格中看到它。
根据评论更新了:好的!现在我明白你的问题了。我想在那之前你使用了datatype: 'local'。如果使用了一些远程数据类型和blockUI插件,您可以执行以下操作。当前您可以看到ajax用于子网格的jqGrid调用这里。它使用complete事件,因此现在jQuery.ajax的success和error事件是空闲的。因此,您可以使用事件来调用.unblock()或$.unblockUI()方法,这将关闭加载覆盖。您可以使用ajaxSubgridOptions参数的jqGrid
$("#list").jqGrid({
// options of grid of subgrid ...
ajaxSubgridOptions {
success: function () {
$.unblockUI(); // or $("#list").unblock();
},
error: function () {
$.unblockUI(); // or $("#list").unblock();
}
}
);如果没有解决您的问题,您应该在问题中包括代码片段,这说明了如何使用blockUI插件,我将通过插入解锁方法的调用来修改代码。
https://stackoverflow.com/questions/6900154
复制相似问题