asp.net - 使用 JavaScript 禁用和重新启用 asp.net Timer 控件

标签 asp.net javascript timer

我有一个 ASP.Net 网页,其中包含 ASP:Timer 控件

<asp:Timer ID="TimerRefresh" runat="server" Interval="5000" Enabled="true" OnTick="TimerRefresh_Tick">
</asp:Timer>

它通过页面中的 asp:UpdatePanel 链接到,以便异步刷新页面的特定部分。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <div class="TopRow" id="TopRowPlace" runat="server">
        ... More HTML Code here...
        </div>
    </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="TimerRefresh" />
        </Triggers>
</asp:UpdatePanel>

问题在于,当用户执行某些操作时,包含异步更新的 HTML 的 DIV 标记可能会被隐藏(通过在样式中将显示属性设置为 none)。发生这种情况时,无需更新内容,因为它是隐藏的。

JavaScript 中是否有一种方法可以禁用计时器运行和异步回发,并且确实可以在 DIV 标记再次可见时重新启用它?

最佳答案

我查看了由我的一个 WebForm 上的计时器添加到 BODY.onload 事件的 JavaScript。我认为修改起来并不容易,除非您真的想覆盖计时器的属性(并将其与更多客户端 JavaScript 混合)。 那么,当您说:

时,您的 DIV 中会发生什么?

...which is updated asychronously can be hidden (...) when a user performs certains actions.

这些操作是在服务器上执行的吗?如果是这样,您可以禁用服务器上的计时器来响应 DIV 中的事件。
我在 WebForm 中有一个带有复选框的 UpdatePanel; CheckBox AutoPostBacks 并具有 CheckedChanged 事件处理程序。如果选中复选框,则启用计时器,并且 UpdatePanel 的内容会在每次勾选时更新 - 如果未选中复选框,则禁用计时器。即使计时器被禁用,自动回发也能正常工作。
如果您在 DIV 中使用客户端 JavaScript,我仍然认为 AutoPostBack 将是最简单的解决方案。

关于asp.net - 使用 JavaScript 禁用和重新启用 asp.net Timer 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/733713/

相关文章:

c# - 无法将外键插入表中

c# - 如何在 DotNetNuke 中以编程方式创建文件夹并为其分配权限?

javascript - 使用本地存储和 JavaScript 保存计时器

linux - 如何在 Linux 用户空间实现高精度定时器?

Asp.Net MVC 动态模型绑定(bind)前缀

c# - ASP.Net应用程序部署过程

javascript - 使用 fetch 时如何确定超时?

javascript - javascript中的map()是同步的吗?

javascript - 在 iPad 上使用 jQuery UI Draggable 和 jQuery Touch Punch 滚动列表无法正常工作

Java - GUI 时钟使用大量 RAM?