是否可以在jqGrid中更改子网格的loadui?

我有一个使用简单子网格的jqGrid(4.1.1)。 当一条记录被加载以查看子网格时,弹出一个与我的正常不同的loadui。

我当前的配置是使用loadui: none ,而在loadui: none事件中我显示自己的加载器。

如果我在subGridBeforeExpand事件中使用我的自定义,它会显示我的消息以及默认消息。 加载完成后我也看不到隐藏div的位置。 subGridRowExpanded似乎不是正确的地方。

简而言之:

  1. 是否有jqGrid设置来隐藏子网格loadui,还是我必须滚动自己的javascript来隐藏它?
  2. 我可以挂钩哪些事件以确保子网格已加载,以便我可以关闭我的加载器?

提前致谢!

如果您查看子网格的代码,您可以在此处找到加载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" (如你所使用的未知“none”值)将被解释为loadui: "disable"

在我看来, 它是子网格中的一个错误

作为解决方法,我建议您在创建jqGrid后删除加载div 。 例如,如果网格的表元素具有id="list" ,那么下一行:

 $("div#load_list").remove(); 

只会删除div,你将永远不会在主网格和子网格中看到它。

根据评论更新 :好的! 现在我明白你的问题。 我之前使用过datatype: 'local' 。 如果使用某些远程数据类型和blockUI插件,您可以执行以下操作。 目前您可以在此处看到j​​qGrid用于子网格的ajax调用。 它使用complete事件,因此jQuery.ajax的successerror事件现在是免费的。 因此,您可以使用事件调用.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插件的代码片段,我将通过插入解锁方法的调用来修改代码。