2010-04-03 6 views
4

У меня есть два UpdatePanels внутри элемент управления аккордеоном, выложенные так:UpdatePanel обновляет только один раз

<accordion> 
    <first pane content> 
     <updatepanel UpdateMode="conditional"> 
     <contenttemplate>...</contenttemplate> 
     <triggers>...</triggers> 
     </updatepanel> 
    </first pane content> 

    <second pane content> 
     <updatepanel> 
      <contenttemplate>...</contenttemplate> 
      <triggers>...</triggers> 
     </updatepanel> 
    </second pane content> 

</accordion> 

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

Это прослушивание меня в течение нескольких дней, поэтому любые советы будут оценены по достоинству. Спасибо!

обновление

Проблема, кажется, лежит, когда я называю это:

Sys.require(Sys.components.accordion, function() { 
        $("#acca_profile").accordion({ 
         HeaderCssClass: "acc_header", 
         HeaderSelectedCssClass: "acc_selectedheader", 
         FadeTransitions: true, 
         suppressHeaderPostbacks: true, 
         requireOpenedPane: false 
        }); 



       }); 

в функции endRequestHandler. Однако, если я не назову это, то div, который должен быть преобразован в аккордеон, больше не является аккордеонным.

Обновление 2

После немного больше работы, я полагал, что проблема может заключаться в том, что Jquery не пересвязывание события после частичной обратной передачи. Много решений утверждают, что вы должны зарегистрировать клиентский сценарий, но у меня есть это в верхней части моей страницы ASPX:

<asp:ScriptManager runat="server" EnablePageMethods="true"> 
<Scripts> 

... (другой скрипт) Path = "HTTP: // Аякс. googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js»/>

</Scripts> 
</asp:ScriptManager> 

Как перепривязывают события JQuery в моем коде?

+0

Мне нужно было бы увидеть больше кода, чтобы помочь –

+0

Вы проверили, есть ли у вас ошибки javascript? Вы можете использовать firebug или все, что вам нравится делать. –

+0

Ах, я обнаружил, что ошибка, похоже, находится в функции, которая вызывается в секции endRequestHandler. В настоящий момент, когда обновляется обновленная панель, аккордеон исчезает (т. Е. Javascript, используемый для преобразования div в аккордеон, больше не выполняется). Я попытался выполнить его в endRequestHandler, и хотя это работает, обновление останавливается. Я обновил свой пост с помощью аккордеонного кода. спасибо – XSL

ответ

1

Наконец-то я решил, что решил! Выбирает несколько строк кода. Разве это не всегда так? : D Для людей, которые приходят через эту нить, я добавил:

Sys.Application.add_init(pLoad); 

Затем я создал функцию, называемую pLoad, который содержал мой аккордеон JavaScript (в оригинальной почте), а также несколько других функций. Пока что все работает ...

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