自动刷新页面,数据不更新

时间:2018-06-12 11:31:20

标签: javascript c# asp.net page-refresh

大家好,所以我使用javascript每隔5秒自动更新一次页面...但是我注意到刷新工作但是它没有更新我的服务器端数据...所以数据网格应该更新它不是......但是如果我按f5然后数据更新......这里是我在标记中的javascript。

<script>
    //refresh the page (without losing state)
    window.setTimeout('document.forms[0].submit()', 5000); 
</script>

(在头脑中)

page load 

has all my data i need... 

  protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                if (DDLProduct.Items.Count == 0)
                {
                    BindDropDownList();
                }

                BizManager mgr = new BizManager();
                mgr.CalcShiftPeriod();

                //stores the bizmanager shiftstart to a backing field
                _shiftStart = mgr.Shiftstart; 
                _shiftEnd = mgr.Shiftend;

#if DEBUG
                //tests these values if program is in debug version.
                _shiftStart = new DateTime(2013, 08, 27, 6, 00, 00); 

                //dismisses if in release version
                _shiftEnd = new DateTime(2013, 08, 27, 13, 59, 59); 
#endif
                //passing in the params to the refreshdata method.
                RefreshData(Product,  _shiftStart, _shiftEnd);
            }
        }

所以本质上页面是刷新的,但除非我做f5刷新,否则数据不会。

2 个答案:

答案 0 :(得分:4)

您实际上并未刷新页面,而是提交表单,从而创建回发。在Page_Load中,如果数据是回发,则不刷新数据。

尝试将javascript更改为:

<script>
   window.setTimeout(function() {
         location.reload();
   }, 5000);
</script>

答案 1 :(得分:1)

我不知道你为什么要每5秒重新加载一次页面

Esko 的回答会对您有用,但

您也可以通过使用此类Meta Refresh来刷新

<head>
  <meta http-equiv="refresh" content="10">
</head>

我建议你这样做:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>      
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <!-- your GridView in UpdatePanel -->
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
    </Triggers> 
</asp:UpdatePanel>
<asp:Timer ID="Timer1" runat="server" Interval="2000" OnTick="Timer1_Tick"></asp:Timer>

后端代码:

protected void Timer1_Tick(object sender, EventArgs e)
{
    // your code to refresh after some interval
}