Пользовательский контроль внутри панели обновления, вызывающий полную обратную передачу страницы - PullRequest
11 голосов
/ 13 июля 2010

У меня есть пользовательский элемент управления с кнопками ссылок (используется для пейджинга) и ретранслятор внутри панели обновлений.Пейджинг работает правильно, но вызывает полный постбэк при каждом переходе на следующую страницу.

Панель обновления выглядит следующим образом:

<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> 

&nbsp;&nbsp;
<asp:Literal ID="ltlNumResults" runat="server" /> results returned.

До сих пор я пытался добавить триггер асинхронной обратной передачи для пользовательского элемента управления, который вызывает асинхронную обратную передачу, но не обновляет остальную часть текста на панели обновлений.Другими словами, происходит асинхронная обратная передача, и появляется следующая страница, но оригинальный текст в повторителе также находится под ним.

Я также подтвердил, что у меня установлена ​​IDS на кнопках ссылок, так какможет вызвать полный постбэк внутри панели обновления.

Я пытался изменить режим панели обновления (Всегда, Условно, ChildrenAsTriggers и т. д.).

Ничто из этого не имеет значения - тольковещь, которая на самом деле вызывает асинхронную обратную передачу, - это использование триггера, но затем остальное содержимое на панели обновлений не обновляется, поэтому я получаю дублированное содержимое.Есть идеи?

Ответы [ 2 ]

16 голосов
/ 13 июля 2010

Полная обратная передача происходит, если ваша UpdatePanel не может отобразить свое содержимое в <div> (например, когда оно находится внутри <tr>).Так что проверьте html внутри UpdatePanel, вы можете найти ответ там (также ищите какой-то неправильный xhtml, например, неправильно закрытые элементы).

0 голосов
/ 13 июля 2010

Удалить режим обновления = "Всегда". Не кладите ничего поверх этого, и оно должно работать.

Еще одна вещь, вы добавляете диспетчер скриптов на свою страницу или нет?

Без менеджера скриптов это не сработает.

...