日期:2014-05-17  浏览次数:20434 次

Timer控件的使用问题。。。
想利用Timer定时的执行一些方法。。。下面给出代码:

HTML code

<asp:ScriptManager ID="ScriptManager1" runat="server" />
    <div>
        <asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="10000">
        </asp:Timer>
    </div>

<li><a href="#">消息
                    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
                        </Triggers>
                        <ContentTemplate>
                            <asp:Label ID="mesnum" runat="server" ForeColor="#CC0000"></asp:Label>
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </a></li>



C# code

protected void Timer1_Tick(object sender, EventArgs e)
        {
            string userid = Session["UserId"].ToString();
            DataTable dt = new MessagesDAO().mescheck(new ModelMessages(userid));
            mesnum.Text = dt.Rows.Count.ToString();
            Timer1.Enabled = true;
        }



就是我想定时的刷新并且获取消息条数。。。为什么总是没有值呢。。。如果我直接在Timer1_Tick方法里面这样赋值:
mesnum.Text = "1";就会定时的刷新。。。如果像上面的代码那样绑定的话它就不刷新了。。这是怎么回事呢?

------解决方案--------------------
if(Session["UserId"]==null)
{
 mesnum.Text = "Session为null";
}
else
{
string userid = Session["UserId"].ToString();
DataTable dt = new MessagesDAO().mescheck(new ModelMessages(userid));
mesnum.Text = dt.Rows.Count.ToString();
}
Timer1.Enabled = true;