是否可以在jqGrid中更改子网格的loadui?
我有一个使用简单子网格的jqGrid(4.1.1)。 当一条记录被加载以查看子网格时,弹出一个与我的正常不同的loadui。
我当前的配置是使用loadui: none
,而在loadui: none
事件中我显示自己的加载器。
如果我在subGridBeforeExpand
事件中使用我的自定义,它会显示我的消息以及默认消息。 加载完成后我也看不到隐藏div的位置。 subGridRowExpanded
似乎不是正确的地方。
简而言之:
- 是否有jqGrid设置来隐藏子网格loadui,还是我必须滚动自己的javascript来隐藏它?
- 我可以挂钩哪些事件以确保子网格已加载,以便我可以关闭我的加载器?
提前致谢!
如果您查看子网格的代码,您可以在此处找到加载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插件,您可以执行以下操作。 目前您可以在此处看到jqGrid用于子网格的ajax
调用。 它使用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插件的代码片段,我将通过插入解锁方法的调用来修改代码。