Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UpdatePanel + JavaScript, UpdatePanel + JavaScript 
:(
    Опции темы
Artemon
Дата 12.11.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Как из JavaScript вызвать серверный PostBack, да так, чтобы не обновлять всю страницу?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Idsa
Дата 13.11.2008, 06:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Нужно вызвать __doPostBack с указанием UniqueId UpdatePanel'и: http://encosia.com/2007/07/13/easily-refre...ing-javascript/

Это сообщение отредактировал(а) Idsa - 13.11.2008, 06:05


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Artemon
Дата 13.11.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Да, действительно - помогло.

Но появилась новая проблема, UpdatePanel стал обновляться, а сним также начали и другие UpdatePanels обновляться, можноли сделать обновление только для одной указанной панели?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Idsa
Дата 13.11.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Для тех панелей, которые не должны обновляться при каждом постбэке, выставьте UpdatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Idsa
Дата 14.11.2008, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Еще один нюанс насчет первого вопроса. Вызов __doPostBack('ControlUnqueId', '') лучше прописывать не ручками, а через
Код

Page.ClientScript.GetPostBackEventReference(myUpdatePanel, null);

Метод GetPostBackEventReference не только вернет строку __doPostBack('ContorlUniqueId', ''), ликвидировав возможность опечатки, но еще и зарегистрирует на странице метод __doPostBack, если этого еще не сделал другой контрол. Конечно, маловероятно, что на странице не найдется контрола, который не сделает этого... тем не менее в обратном случае без вызова GetPostBackEventReference вызовы __doPostBack перестанут работать.
P. S. Сейчас проверил.
1. Создаю пустую страницу. Запускаю - __doPostBack нет.
2. Добавляю на страницу ScriptManager. Запускаю - __doPostBack есть.
Так что ScriptManger заботится о регистрации __doPostBack, поэтому вызов GetPostBackEventReference в данном случае не даст ничего, кроме отсутствия необходимости набирать __doPostBack вручную. Тем не менее, в более общем случае стоит иметь GetPostBackEventReference в виду.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Artemon
Дата 14.11.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Сделал как вы сказали, панель не обновляется визуально, НО PanelLoad всеравно вызвается, так и должно быть ?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Idsa
Дата 14.11.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Artemon, должно быть так, как написано в MSDN:
Цитата

When an UpdatePanel control is not inside another UpdatePanel control, the panel is updated according to the settings of the UpdateMode and ChildrenAsTriggers properties, together with the collection of triggers. When an UpdatePanel control is inside another UpdatePanel control, the child panel is automatically updated when the parent panel is updated. 

The content of an UpdatePanel control is updated in the following circumstances: 

If the UpdateMode property is set to Always, the UpdatePanel control's content is updated on every postback that originates from anywhere on the page. This includes asynchronous postbacks from controls that are inside other UpdatePanel controls and postbacks from controls that are not inside UpdatePanel controls. 

If the UpdatePanel control is nested inside another UpdatePanel control and the parent update panel is updated. 

If the UpdateMode property is set to Conditional, and one of the following conditions occurs: 

You call the Update method of the UpdatePanel control explicitly. 

The postback is caused by a control that is defined as a trigger by using the Triggers property of the UpdatePanel control. In this scenario, the control explicitly triggers an update of the panel content. The control can be either inside or outside the UpdatePanel control that defines the trigger. 

The ChildrenAsTriggers property is set to true and a child control of the UpdatePanel control causes a postback. A child control of a nested UpdatePanel control does not cause an update to the outer UpdatePanel control unless it is explicitly defined as a trigger. 


Если контрол, который вызывает обновление, находится вне UpdatePanel'и с UpdateMode.Conditional, нужно либо добавить Trigger, либо вызывать UpdatePanel.Update вручную.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Artemon
Дата 14.11.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Вопрос в другом, визуального обновления панели не происходит, если UpdatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional.

Но с чего вдруг срабатывает событие, которое обычно вызывется при обновлении панели (LoadPanel)?

Казалосьбы если нет обновления, тои не должно вызываться событие PanelLoad


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Idsa
Дата 14.11.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Artemon @  14.11.2008,  23:29 Найти цитируемый пост)
Казалосьбы если нет обновления, тои не должно вызываться событие PanelLoad 

Ах вот Вы о чем... 
То о чем, Вы говорите, - полный жизненный цикл страницы при обновлении через UpdatePanel - и есть самый большой недостаток UpdatePanel. Тут нужно выбрать между излишней нагрузкой на сервер (из-за полного жизненного цикла) и удобством использования (кинул панельку - и забыл про какой-либо геморой).


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Artemon
Дата 17.11.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



+1


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.1011 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.