最近在做一個項目的時候,web端的數據需要與數據源進行實時同步,並保證數據的准確性,當時,考慮到使用ajax異步刷新技術。但后來在網上查找相關資料時,發現這樣做,太浪費資源了,因為ajax的提交請求不應該這么頻繁的,只適用於那種手動請求響應的那種,因此這種辦法是行不通了,后來,發現asp.net中有一個定時器Timer,可以進行實時同步數據,因此本人就做了一個小小的測試,發現還挺好用的,於是乎就有了下文。如下:
關於如何准確定時器同步出現問題的解決方案:http://www.shaoqun.com/a/103654.aspx
aspx頁面中的代碼:
<form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick"> </asp:Timer> update中的:<asp:Label ID="Label2" runat="server" Text=""></asp:Label> </ContentTemplate> </asp:UpdatePanel> 當前秒:<asp:Label ID="Label1" runat="server" Text=""></asp:Label> </div> </form>
cs服務器上的代碼:
protected void Page_Load(object sender, EventArgs e) { } protected void Timer1_Tick(object sender, EventArgs e) { //這里可以操作你想做的事情,比如定時查詢數據庫 Label1.Text = DateTime.Now.ToLongTimeString()+":"+DateTime.Now.Millisecond; Label2.Text = DateTime.Now.ToLongTimeString() + ":" + DateTime.Now.Millisecond; }
說明一下:
要想使用Timer定時器進行無刷新技術實現。首先在aspx頁面代碼中必須使用ScriptManager控件,同時使用UpdatePanel控件,這樣才會達到想要的結果。
測試后,你會發現,在UpdatePanel中的Label2對應的時間在不停的變化,和Lable1只是在你第一次打開頁面是 顯示,此后就不會顯示了。