我创建了一个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正确地在计时器方法中更新
答案 0 :(得分:1)
按照Ates的建议将UpdateMode
更改为Always
。
(旧)
代码看起来没问题,所以我会制作一个WAG - 您是否在页面生命周期中更新xpto.Text
ANYWHERE ?