2010-08-30 2 views
0

У меня есть следующий код ASPX:AJAX UpdatePanel необходима помощь

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
         <asp:UpdatePanel runat="server" ID="UpdatePanel" UpdateMode="Conditional"> 
          <ContentTemplate> 
           <asp:Button runat="server" ID="UpdateButton1" OnClick="NextImg_Click" Text="Update" /> 
           <asp:Repeater runat="server" ID="urlsUpdateRepeater"> 
            <ItemTemplate> 
             <!-- THIS WOULD BE A LOOP FROM HERE --> 
             <!-- OPENS RESULT ITEM DIV CONTAINER --> 
             <div id="result_item"> 
             <a href="<%# Eval("myUrl") %>" target="_blank"> 
                    <%# Eval("urlPageTitle")%></a> 
            </ItemTemplate> 
           </asp:Repeater> 
          </ContentTemplate> 
         </asp:UpdatePanel> 

У меня есть NextImg_Click() событие, которое работает отлично.

Я использую этот код для DataBind ... что такое метод обновления?

urlsUpdateRepeater.DataSource = resultsCollection; 
urlsUpdateRepeater.DataBind(); 

Все должно быть в порядке. Но каждый раз, когда нажимается кнопка «Обновить», она повторно отображает всю страницу, а не только частичное обновление PostPanel.

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

Поиск и данные отображаются правильно (внутри панели) он просто не выполняет частичную обратную передачу.

Цените свою помощь с моими проблемами с noob!

+0

Быстрая вещь: создайте новую страницу ASP.NET с помощью элемента управления ScriptManager и UpdatePanel с кнопкой внутри. Убедитесь, что в этом простейшем случае нажатие кнопки выполняет частичную обратную передачу страницы. Мы должны убедиться, что ваша конкретная веб-страница вызывает проблему, а не более общую проблему с библиотекой ASP.NET AJAX. –

+0

Спасибо за комментарий - см. Мой ответ для решения этой очень глупой проблемы! :) – Alex

ответ

0

Проблема заключалась в том, что мой <form> тег вложен далее в документе, чем это соответствующий закрывающий тег ...

После перемещения мой тэг формы (с Warning!) - это сработало!

Полностью моя вина, спасибо, ребята.

+0

Хе-хе, это всегда что-то простое. =) Именно поэтому, работая с UpdatePanels, сначала кодируйте все нормально (полная обратная передача), затем работайте над AJAX. (как я сказал в своем комментарии). – RPM1984

+0

Да, лучше всего сломать проблему ... ура ... :) – Alex

0

Поскольку кнопка находится внутри вашего UpdatePanel ContentTemplate, нет необходимости предпринимать какие-либо дополнительные действия для получения частичной обратной передачи страниц.

Попробуйте удалить линию из вашего метода Page_Load().

+0

Пробовал, что ничего не изменил :( – Alex

0

Взятые из MSDN:

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

Итак, вы управление (UpdateButton1) является внутри UpdatePanel, нет необходимости для ScriptManager1.RegisterAsyncPostBackControl вызова - угробить его и ваша проблема решена.

+0

Я знал, что бит уже читал MSDN ... он все еще не работает. – Alex

+0

Вся страница отправлена ​​обратно ... :( – Alex

+0

Установили ли вы атрибут «EnablePartialRendering» на своем Ссылка ScriptManager? .Также попробуйте добавить кнопку в качестве асинхронного триггера: RPM1984

Смежные вопросы