如何使“加载数据”居中。 。“jqgrid treegrid中可见屏幕中的消息?

我有一个大约40列的jqGrid treegrid,所以有一个大的水平滚动条(取决于浏览器的大小)。 问题是由于宽度太大,当页面加载或我做filter等时,你没有看到弹出的“正在加载消息……”。 因为它偏离屏幕右侧。

有没有办法让“加载数据……” 当前可见屏幕中的消息中心(而不是整个页面?

我发现你的问题很好。 同样的问题可能有jqGrid的其他用户。

我个人更喜欢使用loadui: 'block'设置,它在网格加载期间显示整个网格上的叠加。 在这种情况下,问题将不那么重要。

如果更改loadBeforeSend “Loading …”div的位置,则可以获得更好的结果:

 loadBeforeSend: function () { var $loadingDiv = $("#load_"+$.jgrid.jqID(this.id)), $bdiv = $(this).closest('.ui-jqgrid-bdiv'); $loadingDiv.show().css({ top: (Math.min($bdiv.height(), $(window).height()) - $loadingDiv.height())/2 + 'px', left: (Math.min($bdiv.width(), $(window).width()) - $loadingDiv.width())/2 + 'px' }); } 

在我看来,最好修改jqGrid的基本代码(准确地修改beginReq函数的代码)以使上面描述的“Loading …”div的位置始终改变。

更新 :可能更好地实现更改“Loading …”div的位置

 var gridIdAsSelector = $.jgrid.jqID(this.id), $loadingDiv = $("#load_" + gridIdAsSelector), $gbox = $("#gbox_" + gridIdAsSelector); $loadingDiv.show().css({ top: (Math.min($gbox.height(), $(window).height()) - $loadingDiv.outerHeight())/2 + 'px', left: (Math.min($gbox.width(), $(window).width()) - $loadingDiv.outerWidth())/2 + 'px' }); 

代码应该像以前一样放在loadBeforeSend中。

更新2 : 演示演示了这个想法。 我在loadComplate 之外包含了代码仅用于演示目的,以显示它的工作方式。 在演示中,“加载”div保持可见,我还显示了在使用loadui: 'block'显示的叠加loadui: 'block'选项:

在此处输入图像描述

将装载消息的容器放在固定位置,顶部和左侧分配大约40%-60%。 那会解决它

它应该是这样的:

 .loading-message-container { position : fixed; top:50%; left: 45%; }