关于ASP.NET AJAX 中TIMER的问题50分送上.

ipqxiang 2008-01-24 10:01:53
我的代码如下:

//前台
<asp:UpdatePanel UpdateMode="Conditional" ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer Interval="1000" Enabled="false" ID="Timer1" runat="server" OnTick="Timer1_Tick">
</asp:Timer>
<div id="divSubContent" runat="server"></div>
</ContentTemplate>
</asp:UpdatePanel>
//如果后台
protected void Timer1_Tick(object sender, EventArgs e)
{
HtmlGenericControl _div = new HtmlGenericControl();
_div.TagName = "div";
_div.InnerHtml = HttpUtility.HtmlDecode(innertext);
this.divSubContent.Controls.Add(_div);
}


现在就是在定时器里面它每次给DIV加子控件时都会重新开始,也就是页面永远只有一个子DIV.
我是想用ASP.NET AJAX的TIMER看有什么办法解决,高手帮忙啊!!!感激不尽!
...全文
164 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ipqxiang 2008-01-28
  • 打赏
  • 举报
回复
后来我还是用Javascript的timer解决算了.对MS的Asp.net Ajax Timer比较失望.
ipqxiang 2008-01-25
  • 打赏
  • 举报
回复
up
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
天啦!
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
上来
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
帮帮忙啊困了好多天了!
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
但是如果写这样子它又有内容了,可是这样的话就相当于每次都重新赋值了,如果数据多了会死.

//如果后台
protected void Timer1_Tick(object sender, EventArgs e)
{
this.divSubContent.InnerHtml += innertext;
}

独行侠客2 2008-01-24
  • 打赏
  • 举报
回复
我也很想知道这个问题
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
现在我就是让子DIV不断的增加到主DIV里,可是它一直就只有一个,因为它每次执行定时器的东西时上次加的DIV不见了.
LutzMark 2008-01-24
  • 打赏
  • 举报
回复
没明白...
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
没人知道吗?
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
掉下来了.
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
注意定时器已打开,不用考虑.
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
哪道真的用不上它的定时间器效果吗?
ipqxiang 2008-01-24
  • 打赏
  • 举报
回复
楼上的说法是可以,但你也是每次都重新加一次,如果数据量多的话严重影响效率
我现在有点不懂,即然是AJAX怎么每次好象还被重新加载一样.这样我还不如用脚本定时器+AJAX.
drummery 2008-01-24
  • 打赏
  • 举报
回复
我想问题的原因在于动态添加的控件没有保存在视图状态(ViewStates)中导致无法记录状态, 你可以尝试把状态保存起来,我建立了一个List<HtmlGenericControl>类型用来记录添加的控件并保存到ViewState中,但是抛出了无法序列化的异常,因此我我把这个对象保存在当前对话的Session对象中,代码如下:

List<HtmlGenericControl> controls = null;

protected void Timer1_Tick(object sender, EventArgs e)
{
controls = Session["controls"] as List<HtmlGenericControl>;
if (null == controls)
{
controls = new List<HtmlGenericControl>();
}

HtmlGenericControl _div = new HtmlGenericControl();
_div.TagName = "div";
_div.InnerHtml = HttpUtility.HtmlDecode(innertext);
controls.Add(_div);
Session["controls"] = controls;

foreach (object c in controls)
{
divSubContent.Controls.Add(c as HtmlGenericControl);
}
}

这样基本可以实现你的要求。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧