約40列のjqGridツリーグリッドがあるので、大きな水平スクロールバーがあります(ブラウザーのサイズによって異なります)。問題は、幅が非常に大きいため、ページを読み込んだり、フィルターを実行したりすると、「読み込み中のメッセージ...」というポップアップが表示されないことです。画面の右側にあるためです。
「データの読み込み」を行う方法はありますか。(ページ全体ではなく)現在表示されている画面のメッセージセンター
あなたの質問は良いと思います。同じ問題で、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:デモはアイデアを示しています。それがどのように機能するかを示すために、デモンストレーションの目的でのみコードを外部に含めました。 デモでは、「読み込み中」のdivが表示されたままになり、オプションloadComplate
を使用した場合に表示されるオーバーレイが追加で表示されます。loadui: 'block'
読み込みメッセージのコンテナを固定位置に配置し、上部と左側を約40%〜60%に割り当てます。それはそれを修正します
それはそのようなものでなければなりません:
.loading-message-container {
position : fixed;
top:50%;
left: 45%;
}