
開発環境:VB.NET&ASP
いつもお世話になっています。
現在、上記環境でWebアプリの開発を行っていますが
GridView表示に時間がかかり過ぎているため表示を高速化する手段を探しています。
現状、GridViewを表示する際には以下の時間がかかっています。
・270件→約8秒から9秒
・540件→約35秒から36秒
検索しましたが回避策を得ることが出来ませんでしたので有用な手段など
ご存知の方がいらっしゃいましたらご教授いただきたく思います。
よろしくお願い致します。
GridViewは以下の定義となっています。
------------------------------------------------------------
<asp:ButtonField ButtonType="Button" CommandName="InsertCommand" HeaderText="A"
ShowHeader="True" Text="A" />
<asp:ButtonField ButtonType="Button" CommandName="EditCommand" HeaderText="B"
ShowHeader="True" Text="B" />
<asp:ButtonField ButtonType="Button" CommandName="MoveCommand" HeaderText="C"
ShowHeader="True" Text="C" />
<asp:ButtonField ButtonType="Button" CommandName="PasteCommand" HeaderText="D"
ShowHeader="True" Text="D" />
<asp:BoundField DataField="seq" HeaderText="E" SortExpression="E" />
<asp:BoundField DataField="F" HeaderText="F"
SortExpression="F" />
<asp:BoundField DataField="G" HeaderText="G"
SortExpression="G" />
<asp:BoundField DataField="H" HeaderText="H"
SortExpression="H" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="I" HeaderText="I"
SortExpression="I" />
<asp:BoundField DataField="J" HeaderText="J"
SortExpression="J" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="K" HeaderText="K" SortExpression="K"
ItemStyle-HorizontalAlign="Left" >
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="L" HeaderText="L"
SortExpression="L" ItemStyle-HorizontalAlign="Left" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="M" HeaderText="M"
SortExpression="M" >
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="N" HeaderText="N"
SortExpression="N" ItemStyle-HorizontalAlign="Left" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="O" HeaderText="O"
SortExpression="O" ItemStyle-HorizontalAlign="Left" >
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:TemplateField HeaderText="P" SortExpression="P">
<EditItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server"
Checked='<%# Bind("P") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("P") %>'
Enabled="true" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
------------------------------------------------------------
VB.NETソース
------------------------------------------------------------
Dim cnStr As String = System.Configuration.ConfigurationManager.ConnectionStrings("connect").ConnectionString
strSql = "SELECT E, F, G, H, I, J, K, L, M, N, O, P FROM TABLE_NAME WHERE X = '" & Ddl.SelectedValue & "' ORDER BY E"
Dim connection As New SqlClient.SqlConnection(cnStr)
Dim adapter As New SqlClient.SqlDataAdapter(strSql, connection)
adapter.Fill(ds)
GridView1.DataSource = ds
GridView1.DataBind()
------------------------------------------------------------
No.2ベストアンサー
- 回答日時:
No.1です。
速度が遅い問題を解決するには、まずどこが遅いのか計測してください。たとえば、1.SQL Server のデータ取得に時間がかかっている
2.サーバ側の DataBind 処理に時間がかかっている
3.ネットワークの回線速度が遅い
4.結果の HTML サイズが大きすぎる
といったように色々な要因が考えられ、それぞれ解決方法が異なります。仮に大量のデータを扱うことのできるコントロールがあったとしても、ネットワーク速度が遅ければ解決しません。
恐らく3.4.の複合要因ではないでしょうか?
サーバ側で処理開始~終了や要所でのログを出力、ストップウォッチで計測、スタックトレースをとる、HTMLをメモ帳で保存しサイズ確認等、色々調べてみてください。
どうしても大量のデータをクライアントと送受信する必要があるのであれば、Windows アプリや Silverlight 等をクライアントにして、圧縮データをサーバと送受信する、など仕組み自体を変えなければ解決しないかもしれません。
edp3143さま
ご回答ありがとうございます。
当方でも以下の調査を行い解決することが出来ました。
1.全てのボタンをVisible=Falseにして表示を実施
→瞬時にGridViewが表示されることを確認
2.ボタン2つをVisible=False、残りのボタン2つをVisible=Trueにして表示を実施
→4,5秒でGridViewが表示されることを確認
3.全てのButtonTypeをLinkに変更して表示を実施
→瞬時にGridViewが表示されることを確認
上記試行結果よりボタンが原因であると推測しました。
また以下のMSのサイトではバインドコントロール内に
子コントロールを作成するとパフォーマンスが低下する旨の記載もありました。
http://msdn.microsoft.com/ja-jp/library/ms998549 …
このため以下の要因により現象が発生していたと判断しました。
・ボタンの描画に時間がかかっていたこと
・GridViewにボタンコントロールを4つ配置していたこと
・大量のデータであったこと
→そのためButtonTypeをLinkに変更して対応することとしました。
edp3143さまからご教授いただきました解決方法も今後の参考にさせていただきます。
ありがとうございました。
No.1
- 回答日時:
GridView にそんな大量データを表示することがそもそもの間違いです。
それだけの件数表示しても本当に見るの?という話です。普通は Google の検索結果などのようにページング処理を行って、少しずつ表示するようにします。
この回答への補足
edp3143さま
ご回答ありがとうございます。
この一覧はPDFファイルに出力するレイアウトを作成するためのもので
各項目をあわせると基本的に約300件ほどになります。
レイアウト作成のため行の追加、編集、削除が必要となり
ページング処理を行うことができません。
(説明不足でした。申し訳ありません。)
なおGridView は大量のデータを扱うには不向きとのことですが
大量のデータを扱うのに適したコントロールにはどのようなものがあるのでしょうか?
VB.NET&ASPともに始めたばかりのため知識不足で試行錯誤してGridView を使っていました。
よろしければ引き続きご教授をよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- インターネットビジネス アフィリエイトの収益化記事について 2 2023/04/04 15:19
- アプリ ASP[a8など]経由のアフィリエイト案件をyoutubeなどのアプリ内広告で出すのは規約違反ですか 1 2022/06/24 17:23
- インターネットビジネス アフィリエイトのASP、a8ネットで成果確定目安よりだいぶ早く確定されることはありますか? 1 2022/10/17 17:58
- インターネット広告・アフィリエイト アフィリエイトでASPを紹介して登録されたら何円、みたいなアフィリエイトはありますか? a8はないで 2 2022/03/30 19:49
- その他(IT・Webサービス) 対戦型ゲームを考えています。 その時、ゲーマーのハイスコアや全体での 成績スコアなども管理表示したい 2 2023/05/12 14:05
- インターネット広告・アフィリエイト A8ネットなどASPがありますが、ブログ、YouTube、TicTokなどに広告を貼り付けないとした 1 2023/01/17 22:21
- Microsoft ASP ASP.NETや.NET、C#とかVBとか 2 2022/05/16 21:16
- インターネット広告・アフィリエイト アフィリエイト会社の収入源 1 2022/06/16 13:54
- 軍事学 SNASPという言葉の軍事に関する意味をおしえてほしいです 推測でも可 4 2022/07/24 02:35
- IT・エンジニアリング 企業におけるデータ管理方法についてみなさまのお考えを教えてください。 1 2023/04/15 22:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
北原化粧品をお使いの方へ
-
データ受け渡し時の維持
-
不良セクタ8Kb
-
エクセルVBAで変数初期値を...
-
ASPのテスト開発環境について
-
ペ-ジでエラ-が発生しました
-
VBAでIE操作ができない ...
-
10万回でも動くようにするには?
-
Cプログラム UDP送信の送信...
-
エラー内容について
-
メール受信がうまくいかない
-
ACCESSのAutoKeysマクロでアク...
-
SSIでASPを実行したいのですが...
-
ネットワーク上のPCのIPとホス...
-
インストールエラーが解決できない
-
IIS6 ASP Oracle接続
-
sessionタイムはいつから
-
C#エンジニアがASP.NETの世界に...
-
ASPの実行タイミングを設定したい
-
VBSにてサーバー中のエクセルフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Response.Redirectで引数2つの...
-
隠しフィールドをVBScriptでの...
-
ページの更新内容が反映されない。
-
GridView表示の高速化
-
Panelを重ねる方法
-
ASPでテキストファイルにデータ...
-
GridViewからテンプレートフィ...
-
ASP.NETの拡張子はなぜ「asp」...
-
「a.v.v」「iiMK」の...
-
<ASP.NET>DataGridでOnSelected...
-
Tableを動的に増やしたい。
-
押下ボタンによってSubmit先を...
-
DVR710H-Sって、幾らくらいにな...
-
押下ボタンによってSubmit先を...
-
UpdatePanel と GridViewについ...
-
ASPへのデータの受け渡しについて
-
クリッカブルマップを利用したA...
-
AutoPostBackにしているが、う...
-
SUBMITボタンで値を渡す時、次...
-
DropDownListの表示に列連結し...
おすすめ情報