如何在加载网格内容时隐藏 jqgrid header?

how to hide jqgrid header while the grid content is loading?

出于某些原因,我需要隐藏由 jqgrid 生成的默认 header 并为其设置我自己的 header。对于演示,我正在尝试 this.

        loadComplete:function(){
        //$(".ui-jqgrid-titlebar").css("display","none");
        $(".ui-jqgrid-hdiv").css("display","none");
        if (!$(".ui-jqgrid-titlebar").next().hasClass("newheader"))
        {
            $("<div class='newheader'><div class='col-md-6''> FirstText </div><div class='col-md-6'> SecondText </div></div>").insertAfter(".ui-jqgrid-titlebar");           
        }

    },

但我的实现有 13 列和 50 行,它也是 "grouping" 网格。

目前填充网格大约需要 4 秒。在此加载期间,显示默认 header。但我希望在加载内容时隐藏它。我该怎么做?

在一个 answer 中,我了解到为了隐藏 header 我们必须省略标题。但我需要标题而不是 header。帮我解决这个问题!

您可能想使用 gridComplete 而不是 loadComplete ,但如果您使用 Guriddo jqGrid 就是如此,或者您的代码可以包含在 setTimeout 函数中,然后再显示您自己的 header

在我看来,您只想更改网格布局(所有外部潜水和 headers)而不是网格 body。创建 jqGrid 后,将立即 创建网格布局。另一方面,loadComplete 将在 数据 加载后调用。 loadComplete 中的所有当前代码都与数据无关。因此,您可以从 jqGrid 外部移动代码。此外,如果您不想显示 header,您可以删除 caption 参数。之后,您可以删除不需要的行 $(".ui-jqgrid-titlebar").css("display","none");。代码将是

// create the grid
$("#grid1").jqGrid({
    ...
});
$(".ui-jqgrid-hdiv").css("display","none");
$("<div class='newheader'><div class='col-md-6''>FirstText</div><div class='col-md-6'>SecondText</div></div>").insertAfter(".ui-jqgrid-titlebar");  

参见https://jsfiddle.net/92da8xhq/11/。我在创建网格之前添加了 $("#grid1").jqGrid("GridUnload");,因为您当前的代码可以多次调用 showgrid 函数。