ボタンクリックイベントでループ(レコードをループして何らかのアクションを実行)を実行する必要があります。UpdatePanelを使用して現在のループカウンターを表示したいと思いますi
。ネットで検索してもうまくいきませんが、似たような例は見つかりませんでした。lblCounter
ループの完了後にループカウンターが表示されますが、すべてのカウンターについてを表示する必要がありますlblCounter
。
コードに示されているようにステートメントを遅らせる必要がある場合でも、最善の方法は何ですか。
以下のコードは単なる例です。この例を手伝ってくれる人がいれば幸いです。私は実際にテーブル内の各レコードをループして、すべてのユーザーに電子メールを送信したいと思っています。ユーザーの数は2000r300を超えてはなりません。
メールを送信している間、完了したメールの数でクライアント画面を更新することでしたが、これは更新パネルを使用して達成したい基本的なことです。
マークアップ:
<asp:Button ID="btnLoop" runat="server" Text="Start" onclick="btnLoop_Click" /><br />
<asp:UpdatePanel ID="updPanelNewsletterProgress" runat="server"
UpdateMode="Conditional" >
<ContentTemplate>
<asp:Label ID="lblCounter" runat="server" Text=""></asp:Label><br />
</ContentTemplate>
</asp:UpdatePanel>
コード:
protected void btnLoop_Click(object sender, EventArgs e)
{
for (int i = 0; i < 100; i++)
{
System.Threading.Thread.Sleep(2000);
// take some action like send email to user XXX
lblCounter.Text = "Counter " + i.ToString() + " of 100";
}
}