Я создал список, который генерирует пользовательское событие на основе примера 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 на Условное, ничего не случится снова.
Если я создаю таймер и добавляю этот метод:
protected void Timer1_Tick(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
xpto.Text = dt.ToString();
}
XPTO корректно обновляется в методе таймера