2012-01-08 2 views
3

私は約40列のjqGridツリーグリッドを持っているので、(ブラウザのサイズに応じて)大きな水平スクロールバーがあります。問題は、幅が非常に大きいので、ページが読み込まれたり、フィルタなどが実行されたときに、「Loading message。」というポップアップが表示されないためです。それは画面の右側にあるからです。"データを読み込む。" jqgrid treegridの可視画面のメッセージ?

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

答えて

3

同じ問題がjqGridの他のユーザーを持つことができ

私は個人的にオーバーレイオーバーを示しloadui: 'block'設定を使用することを好みます。ワットグリッドローディング中に穴のあるグリッドを作成します。その場合、問題はそれほど重要ではありません。

あなたがloadBeforeSendの内側に「ロード中...」の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の基本コードを変更するのが良いでしょうopiningで(正確にはbeginReq関数のコードを変更する)上記の "Loading ..." divの位置の変更を記述する必要があります。 UPDATED

:の位置変更のおそらくより良い実装「ロードを...」divが、コードは以前のようにloadBeforeSendに配置する必要があり

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' 
}); 

になります。

更新2The demoというアイディアを示しています。私はコードの外にloadComplateを含めて、それがどのように動作するかを実証する目的でのみ示しました。デモでは、「ロードは、」目に見えるとどまるDIVと私はさらにloadui: 'block'オプションの使用の場合に表示されるオーバーレイを表示:

enter image description here

+0

感謝を。これは素晴らしい作品です。私はloadUI:blockを追加し、これら2つのものを組み合わせることで、データがロードされているときにユーザにははるかに明確になりました!! – leora

+0

@leora:ようこそ! – Oleg

0

ローディングメッセージのコンテナを、上部と左を約40%〜60%に割り当てた固定位置に配置します。これで修正されます

それはそのようなものでなければなりません:。私はあなたの質問が良い見つける

.loading-message-container { 
    position : fixed; 
    top:50%; 
    left: 45%; 
} 
関連する問題