简体   繁体   English

无法使计时器事件处理程序正常工作

[英]Can't get timer event handler working

On page, I have UpdatePanel with Timer that works fine: 在页面上,我有带有计时器的UpdatePanel,它工作正常:

<asp:Content ID="content" ContentPlaceHolderID="contentholder" runat="server">
    <asp:ScriptManager runat="server" EnablePartialRendering="true"  ID="ScriptManager"></asp:ScriptManager>
    <asp:Timer ID="Timer" runat="server" Interval="10000" ></asp:Timer>
    <asp:UpdatePanel ID="MainUpdatePanel" runat="server">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer" EventName="Tick" />
        </Triggers>
        <ContentTemplate>
<!-- some content, including repeaters... -->
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

I can't get event handler in code behind working though. 但是,我无法在代码中获取事件处理程序。

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        Timer.Tick += Timer_Tick;
    }
}

private void Timer_Tick(object sender, EventArgs e)
{
_someFlag = true;
}

I can see during debug that Timer.Tick += happens just fine, yet _someFlag never changes its value and _someFlag = true; 我可以在调试过程中看到Timer.Tick +=发生得很好,但是_someFlag从不更改其值,而_someFlag = true; never happens despite page itself updating correctly. 即使页面本身正确更新,也永远不会发生。 What am I missing? 我想念什么?

You have to add OnTick="Timer_Tick" attribute to your timer: 您必须将OnTick="Timer_Tick"属性添加到计时器:

<asp:Timer runat="server" id="Timer1" Interval="10000" OnTick="Timer_Tick"></asp:Timer>

And remove below code from Page_Load: 并从Page_Load中删除以下代码:

Timer.Tick += Timer_Tick;

将“计时器”放在“更新面板”和“内容模板”标签中以处理触发事件

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM