3

約40列のjqGridツリーグリッドがあるので、大きな水平スクロールバーがあります(ブラウザーのサイズによって異なります)。問題は、幅が非常に大きいため、ページを読み込んだり、フィルターを実行したりすると、「読み込み中のメッセージ...」というポップアップが表示されないことです。画面の右側にあるためです。

「データの読み込み」を行う方法はありますか。(ページ全体ではなく)現在表示されている画面のメッセージセンター

4

2 に答える 2

4

あなたの質問は良いと思います。同じ問題で、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'

ここに画像の説明を入力してください

于 2012-01-08T14:14:57.017 に答える
0

読み込みメッセージのコンテナを固定位置に配置し、上部と左側を約40%〜60%に割り当てます。それはそれを修正します

それはそのようなものでなければなりません:

.loading-message-container {
     position : fixed;
     top:50%;
     left: 45%;
}
于 2012-01-08T13:14:55.153 に答える