У меня есть UpdatePanel, который содержит ретранслятор. в ItemTemplate ретранслятора есть кнопка и метка.Ярлык не становится видимым внутри репитера внутри обновляемой панели
Когда кнопка нажата, она выполняет некоторые функции, а затем устанавливает ярлык в видимые и отключает кнопку.
Однако ни один из изменений пользовательского интерфейса не внесен на веб-страницу.
Вот код, который при пошаговом через отладчик, кажется, работает нормально:
protected void CommentRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "report")
{
(e.Item.FindControl("btnReportComment") as ImageButton).Enabled = false;
Label thanksLabel = (Label)e.Item.FindControl("lblReportedComment");
thanksLabel.Visible = true;
}
pnlCommentsUpdater.Update();
}
и код страницы (за исключение коды за пределами ретранслятора)
<asp:UpdatePanel UpdateMode="Conditional" ID="pnlCommentsUpdater" runat="server">
<ContentTemplate>
<asp:LinkButton ID="lnkPhoto1Comments" runat="server" Text="0 Comments" OnClick="lnkPhoto1Comments_Click" CssClass="dark-gray regular bold"></asp:LinkButton>
<asp:Panel ID="pnlPhoto1Comments" runat="server" Visible="False">
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="CommentRepeater_ItemCommand">
<ItemTemplate>
<br />
<hr width="100%" size="1" color="#CCCCCC" />
<table width="534" cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="150" align="left" valign="top">
<span class="blue small bold"><%# Eval("PostedBy") %>,</span><br />
<span class="light-gray small bold"><%# Eval("DateCreated", "{0:g}") %></span>
</td>
<td width="20"></td>
<td width="252" align="left" valign="top">
<div STYLE="word-wrap:break-word;width:252px;left:0">
<span class="dark-gray small bold"><%# Eval("CommentText") %></span>
</div>
</td>
<td width="20"></td>
<td width="92" valign="bottom">
<asp:ImageButton ID="btnReportComment" runat="server" ImageUrl="../images/inappropriate_off.png" CssClass="domclickroll images/inappropriate_on.png images/inappropriate_on.png" AlternateText="Inappropriate" CommandName="report" CommandArgument='<%#Eval("CommentId") %>' /><br />
<asp:Label ID="lblReportedComment" runat="server" Visible="false" CssClass="Regular bold blue" Text="Thanks. We'll check it out!"></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
Как я уже сказал, отладчик показывает, что он работает нормально, однако он просто не показывает ярлык в браузере после нажатия кнопки.
Кто-нибудь знает, что я делаю неправильно?
Ошибка: «Sys.WebForms.PageRequestManagerParserErrorException: сообщение, полученное с сервера, невозможно разобрать. Общими причинами этой ошибки являются ответ на изменение вызовов Response.Write(), фильтров ответов, HttpModules , или трассировка сервера включена. "
И я звоню
ScriptManager.GetCurrent(Page).RegisterPostBackControl(Repeater1);
в загрузке страницы, которую я прочитал в некоторых местах это решение, но это не помогло.
В каком случае обработчик я вызываю RegisterPostBackControl, находя мало информации об этом. –
Получил работу, спасибо! –