※ ChatGPTを利用し、要約された質問です(原文:GridView表示の高速化)
GridView表示の高速化手段とは?
このQ&Aのポイント
VB.NET&ASPで開発されたWebアプリにおいて、GridView表示の高速化を求めています。
現在、GridViewを表示する際には時間がかかりすぎており、回避策が見つかりませんでした。
GridViewの定義やVB.NETのソースコードを提供しており、高速化のための手段を教えてほしいとしています。
開発環境: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()
------------------------------------------------------------
お礼
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.aspx このため以下の要因により現象が発生していたと判断しました。 ・ボタンの描画に時間がかかっていたこと ・GridViewにボタンコントロールを4つ配置していたこと ・大量のデータであったこと →そのためButtonTypeをLinkに変更して対応することとしました。 edp3143さまからご教授いただきました解決方法も今後の参考にさせていただきます。 ありがとうございました。