Javascript 可以在jqGrid中更改子网格的loadui吗?
我有一个使用简单子网格的jqGrid(4.1.1)。当一条记录被导出以查看子网格时,会弹出一个不同于我的普通loadui的loadui 我当前的配置是使用Javascript 可以在jqGrid中更改子网格的loadui吗?,javascript,jquery,jquery-ui,jqgrid,jquery-blockui,Javascript,Jquery,Jquery Ui,Jqgrid,Jquery Blockui,我有一个使用简单子网格的jqGrid(4.1.1)。当一条记录被导出以查看子网格时,会弹出一个不同于我的普通loadui的loadui 我当前的配置是使用loadui:none,并在beforeRequest事件中显示我自己的加载程序 如果我在subgridbeforexpand事件上使用自定义消息,它将显示我的消息以及默认消息。我也不知道加载完成后我会把div藏在哪里subGridRowExpanded似乎不是正确的位置 简言之: 是否有jqGrid设置来隐藏子网格loadui,或者我必须使用
loadui:none
,并在beforeRequest
事件中显示我自己的加载程序
如果我在subgridbeforexpand
事件上使用自定义消息,它将显示我的消息以及默认消息。我也不知道加载完成后我会把div藏在哪里subGridRowExpanded
似乎不是正确的位置
简言之:
提前谢谢 如果查看子网格的代码,可以找到加载div的显示位置,如下所示:
$("#load_"+ts.p.id).show();
另一方面,显示标准(主)网格的代码如下所示(请参见此处):
因此,您可以看到设置loadui:“disable”
将仅在主网格中使用。您如何从上面的代码中看到loadui
的任何值,如“enable”
或“block”
(如您使用的未知“none”值),将被解释为loadui:“disable”
在我看来,这是子网格中的一个bug
作为解决方法,我建议您在创建jqGrid之后删除loading div。例如,如果网格的table元素具有id=“list”
,则下一行:
$("div#load_list").remove();
只需删除div,您将永远不会在主网格和子网格中看到它
根据评论更新了:好!现在我明白你的问题了。我想在此之前您使用了数据类型:“local”
。在使用某些远程数据类型和插件的情况下,您可以执行以下操作。jqGrid对当前可以看到的子网格使用的ajax
调用。它使用complete
事件,因此的success
和error
事件现在是免费的。因此,您可以使用事件调用将关闭加载覆盖的.unblock()
或$.unblock()
方法。您可以使用jqGrid的参数
$("#list").jqGrid({
// options of grid of subgrid ...
ajaxSubgridOptions {
success: function () {
$.unblockUI(); // or $("#list").unblock();
},
error: function () {
$.unblockUI(); // or $("#list").unblock();
}
}
);
如果不能解决您的问题,您应该在问题中包含解释如何使用插件的代码片段,我将通过插入解锁方法的调用来修改代码。我同意这将被视为一个错误。你的解决方案很有魅力。你有没有想过在子网格加载完毕后如何隐藏我的加载程序?@IronicMuffin:对不起,我不明白你的意思。你想隐藏哪个“加载器”?如果删除loader div,则不应显示loader。你能更准确地解释一下你的情况吗。您使用哪个
subgridtype
作为示例?我正在使用blockui插件显示我自己的覆盖,并显示一条加载消息。我在subGridBeforeExpand上显示了这一点,但似乎没有一个subGridLoadComplete
事件可以连接到我可以隐藏加载程序的地方。@IronicMuffin:我现在明白你的问题了。我在回答中写了“更新”部分。
$("#list").jqGrid({
// options of grid of subgrid ...
ajaxSubgridOptions {
success: function () {
$.unblockUI(); // or $("#list").unblock();
},
error: function () {
$.unblockUI(); // or $("#list").unblock();
}
}
);