У меня есть страница с UpdatePanel, которая содержит повторитель и текстовое поле с количеством элементов в повторителе.Когда я изменяю значение, страница должна отправлять обратно и перерисовывать репитер с обновленным количеством элементов.Это работает в принципе, но страница заканчивается после постбэков и не принимает никакого ввода - только в IE 8.Он отлично работает в Firefox.Например, контекстное меню не появляется, когда я щелкаю правой кнопкой мыши в элементах управления, и я не могу ввести текст в текстовые поля.
Когда я вынимаю UpdatePanel, страница работает нормально, но, конечно, обновляется на каждомпостбэк событие.Это не обязательно связано с повторителем на странице.Я думаю, что вижу это на других страницах.В чем тут хитрость?
<asp:UpdatePanel ID="uPanel" runat="server" UpdateMode="Conditional"
EnableViewState="true" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">
<asp:TextBox ID="tbItems" runat="server" AutoPostback="true"
OnTextChanged="textchanged_Items"/>
<asp:Repeater id="rptItems" runat="server"
OnItemDataBound="repeaterItem_Databound">
<...>
</asp:Repeater>
protected void textchanged_Items(object sender, EventArgs e) {
try {
// this methods rebinds the repeater to a List after changing
// the number of items in the list
ReflowItemRepeater();
// This is not really necessary, since Databind() appears to
// cause an update. I tried it anyways.
uPanel.Update();
}
catch (Exception ex) {
ShowError(this, "Error displaying the item list.", ex, true);
}
}
Я закончил тем, что удалил панель обновления.
Месяц спустя, на другой странице, я все еще и снова борюсь с этим.Ситуация такая же.Панель обновления, повторитель (фактически 2 вложенных повторителя) и элемент управления в повторителе, который запускает событие обратной передачи.Сервер правильно обрабатывает событие и возвращает управление, но браузер (IE8) никогда не обновляет панель обновления.Страница не отвечает, как будто в какой-то тупиковой ситуации.Я могу разблокировать его, нажав на кнопку, которая запускает другое событие обратной передачи (также на панели обновления).Но текстовые поля на панели не могут быть нажаты или доступны для редактирования, когда это происходит.Также это случается только в первый раз.Как только я «освободил» блокировку, или что бы то ни было, на этой странице больше не повторится, даже когда я повторю те же самые шаги, которые привели к ней.
Когда это происходит, отладчик JIT ничего не сообщает.