读书人

求帮助!Timer与foreach的有关问题

发布时间: 2013-03-04 17:22:12 作者: rapoo

求帮助!Timer与foreach的问题。
点击开始发送,执行Timer1_Tick
前台无刷新显示:总数,发送成功数,和失败数,
现在的代码只能显示最后的结果,无法动态逐条显示。

/////aspx代码/////
<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel" runat="server">
<ContentTemplate>
总数量:<asp:Label ID="sum" runat="server" Text=""></asp:Label>条,成功发送:<asp:Label ID="success" runat="server" Text=""></asp:Label>,发送失败:<asp:Label ID="failure" runat="server" Text=""></asp:Label>
<asp:Timer ID="Timer1" runat="server" Interval="2000" ontick="Timer1_Tick"></asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>

<asp:Button ID="Button2" runat="server"
Text="开始发送" onclick="StartSend_Click" />


///////////////////// cs代码////////////////
SendMail sm = new SendMail();
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Timer1.Enabled = false;
string dz = Request["dz"];
string fwq = Request["fwq"];
string content = Request["content"];
msmodel = msbll.GetModel(int.Parse(fwq)); //获取服务器信息
codemodel = codebll.GetModel(int.Parse(content)); //获取发送内容文件地址
string contentbody = MailContentBind(codemodel.Dzqk_content);//获取发送内容
}
sum.Text = sum_num.ToString();
success.Text = success_num.ToString();
failure.Text = failure_num.ToString();
}

protected void StartSend_Click(object sender, EventArgs e)
{
Timer1.Enabled = true; //开始发送
}


protected void Timer1_Tick(object sender, EventArgs e)
{
DataSet ds = mabll.GetAll(int.Parse(dz));// 获取邮件地址


sum_num = ds.Tables[0].Rows.Count; //获取地址总数
foreach (DataRow dr in ds.Tables[0].Rows) //遍历邮件地址
{
string mail_to = dr["MailAddress"].ToString();
Boolean issend = sm.SendMyMail(msmodel.Mailserver, msmodel.Mailservername, msmodel.Mailaccountname, msmodel.Mailpwd, mail_to, codemodel.Dzqk_name, contentbody); //发送邮件
if (issend == true)
{
success_num++; //发送成功
}
else
{
failure_num++; //发送失败
}
}

} timer foreace
[解决办法]
用ajax来实现
[解决办法]
foreach中也没有让页面显示啊,你把pageload中显示那几行放到循环中,要么用js去更新页面
[解决办法]
js+ajax就行
[解决办法]
js+ajax 如何实现 需要花点时间。
[解决办法]
要用js去控制页面显示呀,要不然服务器端控件你没有刷新的话,后台值虽然变化了,但是却没有显示出来
[解决办法]
jquery+ajax来实现把
把你服务器的定时器换成js的定时器
代码不就写了 给点参考资料 相信LZ很聪明的
JavaScript定时器

Asp.net Jquery Ajax 实例

不懂的地方可以去看jquery的帮助文档 很有用的哦

读书人网 >asp.net

热点推荐