2011-02-10 3 views
3

В моей JavaScript, у меня есть следующие строки:__doPostBack перезагрузки всей страницы, а не только в UpdatePanel

__doPostBack('MyPanel', MyParam); 

В моем коде позади, я использую MyParam запрос к базе данных и связать результат в GridView, который находится внутри панель обновления MyPanel. Обновленная версия обновляемой панели установлена ​​на условную, а в обратной части кода - MyPanel.Update();

Обновленная панель прекрасно работает, когда я делаю сортировку и подкачку; обновляется только панель. Однако, когда я запускаю панель обновления с помощью javascript, я вижу, что трафик в firebug показывает, что вся страница обновляется.

Какое решение?

Спасибо.

ответ

14

Моя информация: ваша панель обновления находится внутри контейнера именования, поэтому его идентификатор на стороне клиента будет немного отличаться от идентификатора на стороне сервера. Это означает, что вы передаете неправильный параметр __EVENTTARGET клиенту side __doPostBack, и ваша частичная обратная передача стала полной (что означает не async).

Так изменения кода клиента для:

__doPostBack('<%= MyPanel.ClientID %>', MyParam); 

должны решить эту проблему.

Кстати, вы могли бы получить второе (MyParam в коде) параметра со стороны сервера:

var arg = Request.Params.Get("__EVENTARGUMENT"); 
+0

да, панель не была названа правильно. Как отличить от ретрансляции сортировки/пейджинга от своих пользовательских почтовых сообщений. Да, я могу разобрать var arg, но мне интересно, есть ли другой способ, предоставляемый инфраструктурой. Спасибо за решение моей проблемы! – frenchie

+0

@frenchie: yep, есть другой способ архивировать это - путем реализации интерфейса IPostBackEventHandler. – Alex

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