Javascript 可以在jqGrid中更改子网格的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,或者我必须使用

我有一个使用简单子网格的jqGrid(4.1.1)。当一条记录被导出以查看子网格时,会弹出一个不同于我的普通loadui的loadui

我当前的配置是使用
loadui:none
,并在
beforeRequest
事件中显示我自己的加载程序

如果我在
subgridbeforexpand
事件上使用自定义消息,它将显示我的消息以及默认消息。我也不知道加载完成后我会把div藏在哪里
subGridRowExpanded
似乎不是正确的位置

简言之:

  • 是否有jqGrid设置来隐藏子网格loadui,或者我必须使用自己的javascript来隐藏它
  • 我可以挂接哪些事件以确保子网格已加载,以便关闭加载程序

  • 提前谢谢

    如果查看子网格的代码,可以找到加载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();
            }
        }
    );