В атласе есть элемент управления UpdatePanel, который поддерживает частичные обновления. Просто укажите Mode="Conditional". Конечно, ScriptManager также должен установить EnablePartialRendering="true".
Частичное обновление с использованием xmlHttp. Процесс выглядит следующим образом:
1: Во время обратной передачи js страницы возвращает данные на странице (должна быть выполнена обратная передача всей страницы)
2: Фон получает запрос и начинает обработку (может быть запущена загрузка страницы)
3: После обработки отправьте обратно на страницу только те данные, которые необходимо обновить (определите, какую часть данных отправить обратно в соответствии с именем UpdatePanel, который вы хотите обновить. Это код this.updatePanelXX.Update(). )
4: Страница (клиент) обновляет только эту часть данных постбэка (это так называемое частичное обновление, метод заключается в том, чтобы найти updatePanle, а затем UpdatePanel.InnerHtml=PostBackData. Это прямая замена.)
Отсюда С точки зрения, так называемое частичное обновление. Новое заключается в перерисовке только указанной части updatePanel (при отправке обратно на сервер должна быть отправлена обратно вся страница; фоновый код будет обрабатывать каждую из них, как и раньше; но только часть результатов обработки будут возвращены клиенту).
Таким образом, будет очень сложно запустить js-обработку страницы во время обработки UpdatePanle. Поскольку все данные, которые вы отправляете обратно, обновляются в небольшом углу, предыдущий Response.Write(js) вообще не будет работать.
Решение следующее:
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "OpenOverViewPart", openScript); Используйте метод RegisterStartupScript для регистрации функции js, после чего ее можно будет выполнить без проблем.
На самом деле, выполнение не такое гладкое, потому что после того, как атлас выполнит частичное обновление, он соберет все js на странице вместе — занимайтесь своими делами — так что это окажет небольшое влияние: многие js имеют, например, <! и другие символы комментариев. Если вы не будете осторожны, ваш собственный js также будет прокомментирован. Это действительно более хлопотно.
Решение — X. Вам нужно самостоятельно контролировать стиль вывода js и добавить еще несколько символов возврата каретки, чтобы показать, что это не комментарий.
строка openScript = "nt";
openScript = "<script" + " type='text/javascript'>rn"
+ "рн"
+ "вар а=0;rn"
+ "opener.top.__doPostBack('" + Request.Params["refresh"] + "','refresh');rn"
+ "window.opener.focus();"
+ "окно.закрыть();"
+ "<" + "/script" + ">";