【问题标题】:refresh page automatically, data is not updating自动刷新页面,数据不更新
【发布时间】:2018-08-09 19:23:05
【问题描述】:

大家好,我正在使用 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 刷新。

【问题讨论】:

  • 你调试代码了吗?页面刷新时执行page_load?
  • 数据刷新时如何更新显示
  • 存储的过程是我正在使用的

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


【解决方案1】:

您实际上并没有刷新页面,而是提交了表单,因此创建了回发。在您的 Page_Load 中,如果是回发,则不会刷新数据。

尝试将 javascript 更改为:

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

【讨论】:

  • 不,这不起作用,5秒后我会弹出一个提示-要再次显示网页,网络浏览器需要重新发送您之前提交的信息。
【解决方案2】:

我不知道你为什么每 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
}

【讨论】:

  • 这会丢失我的下拉选择并重置为默认页面加载。
  • 这就是为什么我已经提到你为什么要重新加载你可以将你的页面内容放在更新面板中并创建一个函数来从数据库中获取数据并通过 JavaScript 计时器调用它
  • 好吧,很抱歉这个新手问题,但是我如何实现这一点,我是 c# 和 asp.net 的新手 :)
  • 我正在使用 ddl 来更新我的 gridview 选择,所以 ddl 也需要在计时器控件中
  • 好的,谢谢,新手问题,我有一个名为 gridview1 的网格视图,内容模板中包含什么,以及 timer1_tick 方法中包含什么?这会在页面加载中进行吗?
猜你喜欢
  • 2020-02-29
  • 2013-03-14
  • 1970-01-01
  • 2019-06-05
  • 2018-10-08
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多