使用自定义事件刷新ASP.NET页面

时间:2011-11-25 15:37:36

标签: c# asp.net ajax events

我创建了一个List,它根据此page中的示例1生成自定义事件,并且只要列表中有任何新元素,我就需要更新一个aspx页面。

当我调试应用程序时,我可以看到值已更新,但页面上没有任何内容。

ASPX

        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
            <ContentTemplate>
                <fieldset>
                <legend>UpdatePanel</legend>
                <asp:Label ID="xpto" runat="server" Text="zzzzzzzzzzzz"></asp:Label>
                </fieldset>
            </ContentTemplate>
        </asp:UpdatePanel>

代码背后

MessageHandling.DashboardRequests.Changed += new EventHandler(ListChanged);
...
...
...
private void ListChanged(object sender, EventArgs e)
{
    DateTime dt = DateTime.Now;
    xpto.Text = dt.ToString();
}

修改

如果我将UpdateMode更改为Always和ListChanged方法为:

private void ListChanged(object sender, EventArgs e)
{
  DateTime dt = DateTime.Now;
  xpto.Text = dt.ToString();
  UpdatePanel1.Update();
} 

我收到以下错误:

The Update method can only be called on UpdatePanel with ID 'UpdatePanel1' when UpdateMode is set to Conditional. 

如果我将UpdateMode设置为Conditional,则不会再发生任何事情。

如果我创建一个计时器并添加此方法:

protected void Timer1_Tick(object sender, EventArgs e)
{
  DateTime dt = DateTime.Now;
  xpto.Text = dt.ToString();
}

xpto正确地在计时器方法中更新

1 个答案:

答案 0 :(得分:1)

按照Ates的建议将UpdateMode更改为Always


(旧)

代码看起来没问题,所以我会制作一个WAG - 您是否在页面生命周期中更新xpto.Text ANYWHERE