计时器事件完成触发后,div \ label \ Span消失

时间:2018-09-13 18:27:10

标签: javascript c# html asp.net

我正在构建一个Web应用程序,该应用程序的“信息栏”跨越Web应用程序的整个宽度。它位于DEFAULT.aspx页面中,因为我希望此信息栏位于顶部并始终显示,无论最终用户将在Web应用程序中位于何处。此信息栏将显示更新,状态以及未显示的内容。
它通过读取数据库中的表,提取消息和样式(红色,黄色,绿色背景)来工作。当没有要报告的内容时,它消失。以下是其外观示例。

Sample infobar screenshot

在大多数情况下,这一切都很好!我通过UI更新表格。我的问题是这个。我希望信息栏更新而最终用户不点击F5(这会触发代码以提取数据)。因此,如果我更新表,则计时器每5分钟(或其他时间)运行一次,以查看表中是否有值。如果是这样,请抓住它并将其发布到屏幕上。仅当最终用户点击F5时,更新才有效。 下面是我的HTML代码:

 <div>
          <asp:UpdatePanel ID="uppInfoBar" runat="server">
              <ContentTemplate>
                <asp:Timer id="tmrInfoBar" runat="server" Interval="30000" OnTick="tmrInfoBar_Tick" Enabled="true" />
                <asp:Label runat="server" id="lblinfoBar" Visible="true"  >
                    <div class="info-bar" >
                        <div class="info-bar__wrapper">
                            <i data-info-bar="icon"></i>
                            <span id="spnInfoBar" runat="server" data-info-bar="text"></span>
                            <asp:HiddenField ID="hdf_Test" runat="server"/>
                        </div>
                    </div>
                </asp:Label>
              </ContentTemplate>
          </asp:UpdatePanel>    
      </div>

当我单步执行C#代码时,所有值均已正确提取,但是在C#代码中最后一个“}”之后的下一个步骤,信息栏消失。没有参数可以在项目中的任何地方将其关闭。 如果我注释掉计时器,则运行它的所有内容,用新消息更新表格,按F5键,将显示更新的消息。

我该怎么办才能强制进行update \ refresh以使信息栏自行更新?我愿意就如何实现这一点提出其他建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,一种方法是在客户端使用javascript并每隔xx秒使用setInterval进行一次ajax调用并获取新的通知,使用更新的技术,您可以研究SignalR,以便您的服务器可以将邮件,文档(https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/introduction-to-signalr)推送到客户端