首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从代码隐藏中每隔2秒刷新一次UpdatePanel区域

从代码隐藏中每隔2秒刷新一次UpdatePanel区域
EN

Stack Overflow用户
提问于 2012-10-07 14:28:18
回答 1查看 1.8K关注 0票数 0

我正在开发一个小的时事通讯应用程序,可以发送时事通讯给少量用户,让我们说100- 200个用户之间。

我希望管理员看到通讯广播的进度每2-3秒通过显示计数器和添加电子邮件地址到列表框。

我正在尝试用下面的代码来实现这一点。我已经添加了部分代码。它工作得很好,但在向所有用户发送电子邮件后显示结果。

代码语言:javascript
复制
 <asp:UpdatePanel ID="updPanelNewsletterProgress" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
            <asp:Label ID="lblCounter" runat="server" Text=""></asp:Label><br /><br />
            <asp:CheckBoxList ID="cbListEmailsAddress" runat="server">
            </asp:CheckBoxList>
    </ContentTemplate>
</asp:UpdatePanel>  


protected void btnSendNewsletter_Click(object sender, EventArgs e)
{
    DataSet ds = new DataSet();
    string strSql = "SELECT DISTINCT(Email) FROM Subscribe WHERE unsubscriber=0";
    int counter, totalRows;
    counter = 0;
    ds = DataProvider.Connect_Select(strSql);
    totalRows = ds.Tables[0].Rows.Count;
    DataTable dt = ds.Tables[0];

    foreach (DataRow dRow in dt.Rows)
    {
        to = ds.Tables[0].Rows[0]["Email"].ToString();
        Helper.SendEmailNewsletter(to, subject, message, isHtml);
        counter = counter + 1;
        lblCounter.Text = "Sending " + counter.ToString() + " of " + totalRows.ToString();
        updPanelNewsletterProgress.Update();
        System.Threading.Thread.Sleep(2000);
    }

}

如果有人能给我指出一个更正确的方法,我将不胜感激,并展示我可以在发送电子邮件时从后台代码更新计数。

示例: 100人中的1人发送100人中的10人

EN

回答 1

Stack Overflow用户

发布于 2012-10-07 17:00:11

在代码隐藏中使用Thread.Sleep()或计时器对您没有帮助。

ASP.NET是一种请求/响应模型,UpdatePanel执行部分页面更新,但也遵循此请求/响应模型。

您可以使用与UpdatePanel位于同一选项卡上的the (Client side) Timer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12766643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档