1

通常、完了までに約 15 分かかるサーバー操作があります。操作中に操作のさまざまな段階をユーザーに伝えたいと思います。

ここに私のフォームコードがあります:

 <asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
    <ContentTemplate>
        <asp:Timer ID="Timer1" runat="server" Interval="300" ontick="Timer1_Tick">
        </asp:Timer>
        <asp:Label ID="lbl_Status" runat="server" Text=""></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

</div>

<asp:FileUpload ID="upl_UserList" runat="server" />

<p>

    <asp:Button ID="btn_Update" runat="server" Text="Update Users" 
        onclick="btn_Update_Click" />

</p>
</form>

...そして私の tick イベントハンドラ:

 protected void Timer1_Tick(object sender, EventArgs e)
    {
        lbl_Status.Text = labelText;
        lbl_Status.ForeColor = labelColor;
    }

ユーザーが更新ボタンをクリックしている間、ブラウザはサーバーの応答を待ってスタックします。これにより、ラベルが更新されません。

これをどのように修正すればよいですか? iframe を使用する必要がありますか?

4

1 に答える 1

0

このコードを追加

    <Triggers>
     <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
   </Triggers>

更新パネルの後にコードを配置し、タイマーを動かします:

  <asp:Timer ID="Timer1" runat="server" Interval="300" ontick="Timer1_Tick">
  </asp:Timer>

  <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
        <ContentTemplate>
          <asp:Label ID="lbl_Status" runat="server" Text=""></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
于 2012-09-04T19:56:53.427 に答える