0

私は、データベースからデータを取得するために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
4

1 に答える 1

0

ここでは、Ajax ローダーまたは UpdateProgress Ajax コントロールを使用できます。

于 2012-06-13T08:29:00.510 に答える