【问题标题】:ASP.net help with auto refresh web pageASP.net 帮助自动刷新网页
【发布时间】:2011-06-21 10:58:26
【问题描述】:

我正在开发一个 Web 项目,我需要将来自 interbase 数据库的数据显示到网格视图中。然而,这些数据是不断变化的,iv 设法查询数据库并将数据显示到网格视图中。我现在纠结于如何在 5 分钟后自动刷新页面,以便查询和显示新数据。

您能否就我如何实现上述目标提出建议。

【问题讨论】:

    标签: c# asp.net c#-4.0


    【解决方案1】:

    如果你不使用 AJAX,你可以设置一个META refresh 标签来每 5 分钟重新加载一次页面。

    如果您确实使用 AJAX,您可以设置 setTimeout 来重新获取数据。

    【讨论】:

    • 我没有使用 AJAX,你能给我提供一篇关于如何设置一个计时器的文章,让网页每 5 分钟执行一次 Page_Load 功能。
    • @c11ada - 我链接到相关网页。你想要的需要在 client 端完成,而不是在 server 端。将它放在page_load 上不会为您做任何事情。
    • iv 决定使用 META 刷新标签,但是我有一个小问题我使用母版页,我不希望所有页面在 5 分钟后刷新其中一个。显然你不能在从母版页派生的页面中放置 META 标记?!
    • @c11ada - 你是对的,这是不可能的。您可以在主标题上放置literal 控件,并在您的特定内容页面中将其设置为 META 标记。
    • 对不起,我是 ASP.NET 开发的新手,你能解释一下我该怎么做吗?
    【解决方案2】:

    将 GridView 放入 UpdatePanel 并使用 Timer

    这里有一些链接。

    http://ajax.net-tutorials.com/controls/timer-control/ http://mattberseth.com/blog/2007/08/using_the_ajax_timer_control_a.html
    http://msdn.microsoft.com/en-us/library/cc295400.aspx

    【讨论】:

      【解决方案3】:

      您可以在从母版页派生的页面中设置 META 刷新,您只需将其添加到 PreRender 中的代码中

      HtmlGenericControl ctrl = new HtmlGenericControl("meta");
      ctrl.Attributes["http-equiv"] = "refresh";
      ctrl.Attributes["content"] = "300";
      this.Page.Header.Controls.Add(ctrl);
      

      【讨论】:

        【解决方案4】:

        创建页面,在 HEAD 部分使用以下 META 标记

        <META http-equiv = "refresh" URL = "default.html" />
        

        【讨论】:

          【解决方案5】:

          在更新面板中使用timer control,设置时间间隔,在timer_Tick事件上调用服务器端事件,页面将定期刷新。间隔以毫秒为单位。

          <asp:ScriptManager ID="ScriptManager1" runat="server">
              </asp:ScriptManager>
          
           <asp:UpdatePanel runat="server" id="TimedPanel" updatemode="Conditional">
              <Triggers>
                  <asp:AsyncPostBackTrigger controlid="UpdateTimer" eventname="Tick" />
                  <asp:PostBackTrigger ControlID="btnSubmit" />
              </Triggers>
              <ContentTemplate>
               <asp:Timer runat="server" id="UpdateTimer" interval="2000"  OnTick="Timer1_Tick"  /> 
          

          【讨论】:

            【解决方案6】:

            在 default.aspx 页面中

            <html xmlns="http://www.w3.org/1999/xhtml">
            <head runat="server">
                <meta http-equiv="content-type" content="text/html; charset=UTF-8">
                <!-- For auto refresh cause use this section-->
                <meta http-equiv="refresh" content="30">
            <meta http-equiv="refresh" content="30;url=../account/default.aspx">
            <title></title>
            </head>
            

            在 default.aspx.cs 后面的代码中

            protected void Page_Load(object sender, EventArgs e)
            {
               Response.AppendHeader("Refresh", 30 + "; URL=../account/default.aspx");
            } 
            

            此网页将每 30 秒自动刷新一次。

            谢谢

            【讨论】:

              【解决方案7】:

              您可以编写一个 javascript 计时器,然后刷新页面。无法记住语法,但它应该类似于 window.location.reload 或 window.form.reload。您在 Page_Load 函数的末尾附加了 javascript 计时器函数。

              【讨论】:

              • 检查@Oded 提到的元标记。这是一个老派的解决方案!
              猜你喜欢
              • 2023-03-04
              • 1970-01-01
              • 1970-01-01
              • 2010-10-01
              • 1970-01-01
              • 2016-12-08
              • 2011-04-13
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多