我有一个使用简单子网格的jqGrid(4.1.1)。当一条记录被加载以查看子网格时,会弹出一个与我的正常情况不同的loadui。
我目前的配置是使用loadui: none
,在beforeRequest
事件中我会显示自己的加载程序。
如果我在subGridBeforeExpand
事件中使用我的自定义事件,它会显示我的消息以及默认消息。加载完成后,我也看不到隐藏div的位置。 subGridRowExpanded
似乎不是正确的地方。
简而言之:
提前致谢!
答案 0 :(得分:1)
如果您查看子网格的代码,您可以找到here加载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"
在我看来这是子网格中的错误。
作为解决方法,我建议您在创建jqGrid 之后删除加载div。例如,如果网格的表格元素有id="list"
,那么下一行:
$("div#load_list").remove();
只会删除div,你将永远不会在主网格和子网格中看到它。
根据评论 更新:好的!现在我明白你的问题。我之前使用datatype: 'local'
。如果使用某些远程数据类型和blockUI插件,您可以执行以下操作。 jqGrid用于子网格的ajax
调用目前您可以看到here。它使用complete
事件,因此jQuery.ajax的success
和error
事件现在免费。因此,您可以使用这些事件调用.unblock()
或$.unblockUI()
方法来关闭加载叠加层。您可以使用jqGrid的ajaxSubgridOptions参数
$("#list").jqGrid({
// options of grid of subgrid ...
ajaxSubgridOptions {
success: function () {
$.unblockUI(); // or $("#list").unblock();
},
error: function () {
$.unblockUI(); // or $("#list").unblock();
}
}
);
如果它没有解决您的问题,您应该在您的问题中包含解释如何使用blockUI插件的代码片段,我将通过插入解锁方法的调用来修改代码。