注册 登录
编程论坛 ASP.NET技术论坛

用了AJAX之后,timer定时10秒,然后页面就每十秒都执行一次page的事件

ylof1986 发布于 2010-07-06 09:01, 2760 次点击
怎么搞的那,有些代码我想就执行一次的啊,这下怎么办那,不管是page的init 还是page的load都会每十秒执行一次的啊
9 回复
#2
冰镇柠檬汁儿2010-07-06 09:20
也就是说你要每10秒钟刷新一次页面喽?
#3
ylof19862010-07-06 09:22
回复 2楼 冰镇柠檬汁儿
刷新UpdatePanel里面的数据啊,但是又想有一部分初始化的代码只执行一遍就好了,怎么办哦
#4
冰镇柠檬汁儿2010-07-06 09:26
“有一部分初始化的代码只执行一遍”,难道你想初始化的代码都应该执行N遍?page_load方法里别忘了加ispostback的判断,这样就执行了一遍。
“刷新UpdatePanel里面的数据”,这个我不是很清楚,因为我用ajax向来自己手写代码,用NET的控件我觉得影响执行效率。
#5
cxwl3sxl2010-07-06 10:55
UpdatePanel post的是整个page,服务器端得page生命周期的所有事件是都会执行的,没得办法避免。除非是你自己在你的code里面判断是不是因为updatepanel而引起的回发
#6
ylof19862010-07-06 16:37
回复 5楼 cxwl3sxl
那怎么判断哪
#7
bygg2010-07-06 17:58
aspx中:
程序代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">              
    <ContentTemplate>
      
        //这里是要刷新的数据显示的地方。         
         
        <asp:Timer ID="Timer1" runat="server" Enabled="True" Interval="10000" ontick="Timer1_Tick">
        </asp:Timer>
    </ContentTemplate>
</asp:UpdatePanel>

aspx.cs中
protected void Timer1_Tick(object sender, EventArgs e)
{
    QueryData();   //自己写的一个显示部分数据的方法。
}

一个页面中,可以有多个UpdatePanel 进行控制,所有我们可以单独或者多个控制它们中的数据刷新。
当然,你想刷新哪个UpdatePanel,对应的触发服务端的事件便得放到它中间,就像上面的aspx中的代码一样,Timer是触发服务器端的控件,所以必需得放到<asp:UpdatePanel>...</asp:UpdatePanel>中,否则,即使刷新了,也是整个页面,而不是对应的UpdatePanel。

希望对你有用。

[ 本帖最后由 bygg 于 2010-7-6 18:00 编辑 ]
#8
冰镇柠檬汁儿2010-07-07 09:29
对我很有帮助,我从来没用过ajax控件
#9
cxwl3sxl2010-07-10 11:45
如果是UpdatePanel引起的回发,在this.Request.Form里面会有一个key叫ScriptManager的字段。
#10
misswang2010-07-11 10:38
先顶下...学习中....
1