QA@IT

ASP.NET(C#) GridView描画中の「表示中..」表示

6015 PV

いつもお世話になっております。
ASP.NETのGridViewコントロールの表示が遅いため描画中に「表示中..」のような画像や文字を出したいと考えています。
updatepanelとupdateprogressを使った方法を試したのですが、
ボタンクリック→updateprogress表示→updateprogressが消える→GridView表示→全ての行が表示しきるまでスクロールバーが縮んでいく(この間画面が固まる)→全ての行表示(操作が可能となる)
このようになってしまいます。
GridViewの行数は300行程で、templatefieldを使用しています。
全ての行が描画されるまで「表示中..」を出したいのですが何か方法はありますでしょうか?
よろしくお願いいたします。

  • サーバーでの処理に時間がかかっていて応答が戻ってくるのに時間がかかるのか、ブラウザに応答が戻ってきてから描画されるのに時間がかかるのか、どっちですか? 後者のような気がしますが、そうだとすると何か特別なことをしてませんか? 300 行ぐらいは、普通、応答が戻ってくれば瞬時に描画されると思いますが。 -
  • あと、質問する際には、必ずご自分の環境(OS, ASP.NET, IIS, Visual Studio, DB サーバーなどの種類・バージョン、使用しているブラウザなどの情報)を書いていただくようお願いします、 -

回答

遅くなり申し訳ございません。
SurferOnWwwさん、ありがとうございます。
今までlocalhostでテストをしていて描画がすごく遅く感じたのですが、サーバーでやってみたところそこまで気になる遅さではありませんでした。
F12 開発者ツールで時間を測ったところ
・localhostの場合
 [待機]<1ミリ秒[開始]<1ミリ秒[要求]94ミリ秒[応答]0.71秒[ギャップ]16.12秒
・サーバーの場合
 [待機]<1ミリ秒[開始]<1ミリ秒[要求]63ミリ秒[応答]<1ミリ秒[ギャップ]4.41秒
となりました。
やはり、応答が返ってきてから描画が終了するまでに時間が掛かっているようです。

編集 履歴 (0)
  • 前にも書きましたが、描画に時間がかかっているのであれば、その原因を調べ、それに対処するほかないと思います。原因を調べるのは質問者さんにしかできません(少なくとも今提供されている情報では第三者には何も分かりません)。 -

SurferOnWwwさん、いつもご回答ありがとうございます。
情報が足りず誠に申し訳ございません。
Windows7、ASP.NET4.0、 IIS7.0、Visual Studio Web Developer 2010 Express、
C#、SQL Server 2008、IE9で開発を行っております。
使用しているGridViewは、28列固定で内3列がtemplatefieldを使用しています。
templetefieldにはtextboxを入れています。
サーバー側ではGridViewにDataTableをバインドし、RowDataBound()で4列を非表示にしています。
SurferOnWwwさんの仰るように応答が戻ってきてから描画されるのに時間が掛かっているようですが、上記以外は特に行っておりません。

編集 履歴 (0)
  • 「応答が戻ってきてから描画されるのに時間が掛かっている」のであれば UpdatePanel, UpdateProgress を使っても何ともなりません。描画に時間がかかる原因を調べ、それに対処するほかないと思います。 -
  • #クラス名、プロパティ名、メソッド名は、掲示板でも、正しく大文字小文字を区別して書くことをお勧めします。 -
  • サーバーで起こっていることと、ブラウザで起こっていることを区別して考える習慣をつけることをお勧めします。Web アプリ開発ではそれは必須です。たぶんそのあたりの区別がついてなくて、今回のような質問になったのではないかと推測してます。なお、描画に時間がかかる原因は今提供されている情報では分かりません。質問者さんの方でもう少し切り分けしてください。 -
  • ご指摘ありがとうございます。
    仰る通り、切り分けがついていないまま質問をしてしまいました。
    もう少し調べてみます。
    -
  • IE9 を使用しているとのことですので、F12 開発者ツールを利用すると、どこで時間かかかっているか調べることができると思います。
    http://blogs.msdn.com/b/osamum/archive/2011/08/15/f12-ie9-networkinformation.aspx
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。