Пользовательский контроль внутри панели обновлений, вызывающий полную обратную передачу страницы
У меня есть пользовательский элемент управления с кнопками link (используется для подкачки) и ретранслятор внутри панели обновлений. Пейджинг работает правильно, но вызывает всплывающее сообщение с полной страницы при каждом нажатии на следующую страницу.
Панель обновления выглядит так:
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Repeater ID="rptOrganizations" runat="server">
<HeaderTemplate>
<table>
<thead>
<tr>
<th>Organization</th>
<th>State</th>
<th>Accredited Since</th>
</tr>
</thead>
</table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Literal ID="ltlInstitution" runat="server" />
</td>
<td>
<asp:Literal ID="ltlState" runat="server" />
</td>
<td>
<asp:Literal ID="ltlAccreditedDate" runat="server" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<uc2:RepeaterPaging ID="rpPager" runat="server" PageSize="10" OnNextButtonClickEvent="btnNext_Click" OnPreviousButtonClickEvent="btnPrev_Click" />
</ContentTemplate>
</asp:UpdatePanel>
И содержимое пользовательского элемента управления выглядит следующим образом:
<asp:LinkButton ID="btnPrev" runat="server" OnClick="btnPrev_Click">Previous</asp:LinkButton> |
<asp:LinkButton ID="btnNext" runat="server" OnClick="btnNext_Click">Next</asp:LinkButton>
<asp:Literal ID="ltlNumResults" runat="server" /> results returned.
До сих пор я попытался добавить асинхронный триггер postback для пользовательского элемента управления, который вызывает асинхронную обратную передачу, но не обновляет остальную часть текста на панели обновления. В других словах происходит асинхронная обратная передача, и появляется следующая страница, но исходный текст в ретрансляторе находится также под ним.
Я также подтвердил, что у меня IDS установлен на мои кнопки ссылок, так как это может вызвать полный обратный вызов внутри панели обновлений.
Я попытался изменить режим панели обновления (Always, Conditional, ChildrenAsTriggers и т.д.).
Ничего из этого не имеет значения - единственное, что фактически вызывает асинхронную обратную передачу, это использовать триггер, но тогда остальная часть содержимого на панели обновления не обновляется, поэтому я получаю дубликат контента. Есть идеи?
Ответы
Ответ 1
Полная обратная передача происходит, если ваша UpdatePanel не может отобразить ее содержимое в <div>
(например, когда оно находится внутри <tr>
). Таким образом, проверьте html внутри UpdatePanel, вы можете найти ответ там (также найдите неправильный xhtml, например, неправильно закрытые элементы).
Ответ 2
Удалить режим обновления = "Всегда". Не ставьте что-либо по этому поводу, и оно должно работать.
Еще одна вещь: вы добавляете менеджера script на свою страницу или не контролируете?
Без script менеджера он не будет работать.