私は、データベースからデータを取得するためにWebサービスを一連の呼び出しを行い、それをグリッドビューに入れるasp.netコントロール(.net 3.5)を持っています。各データベース クエリには数秒かかるため、一度にすべてを呼び出すのではなく、一連の呼び出しで実行します。そうしないと、タイムアウトになります。
すべてのデータが返されるまで、ページはレンダリングされないようです。何かが実際に起こっているという確信をユーザーに与えるために、呼び出しが行われるたびに進行状況をユーザーに示すにはどうすればよいでしょうか?
グリッドには財務データが含まれています。ユーザーは月と年を選択してボタンを押すと、この一連の Web サービス呼び出しが開始されます。そのため、これは通常、ポストバックで発生します (ただし、ページは最初に現在の月と年のデータがあればレンダリングされます)。
私はUpdatePanelに出くわしました。これにより、データが入力されるたびに各テーブルがレンダリングされますか?
編集:サニーの提案を使用してこれまでに試したことは次のとおりです
.ascx ファイル
<asp:UpdateProgress ID="UpdateProgress1" AssociatedUpdatePanelID="UpdatePanel1" runat="server">
<ProgressTemplate>
UpdatePanel1 updating...
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdateProgress ID="UpdateProgress2" AssociatedUpdatePanelID="UpdatePanel2" runat="server">
<ProgressTemplate>
UpdatePanel2 updating...
</ProgressTemplate>
</asp:UpdateProgress>
<asp:Label runat="server" ID="lblOB"></asp:Label><asp:UpdatePanel ID="UpdatePanel1" runat="server">
<contenttemplate>
<h3><asp:Label runat="server" ID="lblT1"></asp:Label></h3>
<asp:GridView runat="server" id="gridT1">
</asp:GridView>
</contenttemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<contenttemplate>
<h3><asp:Label runat="server" ID="lblT2"></asp:Label></h3>
<asp:GridView runat="server" id="gridT2">
<Columns>
</Columns>
</asp:GridView>
</contenttemplate>
</asp:UpdatePanel>
.ascx.vb ファイル:
(Pseudo code)
Call webservice for table 1
gridT1.datasource = table 1 data from webserivce
gridT1.DataBind()
lblT1.text = heading
Call webservice for table 2
gridT2.datasource = tabld 2 data from webserivce
gridT2.DataBind()
lblT12text = heading