Поскольку вы используете UpdatePanels, вам нужно подключиться к ASP.NET AJAX PageRequestManager
Вам необходимо добавить метод к endRequest перехватчикам событий, которые:
Возникает после завершения асинхронной обратной передачи и возвращения управления браузеру.
Так что у вас будет что-то вроде:
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(pageLoaded);
function pageLoaded(sender, args) {
window.scrollTo(0,0);
}
</script>
Что заставит браузер прокрутить назад до верхней части страницы после завершения запроса на обновление.
Есть и другие события, которые вы могли бы подключить вместо:
beginRequest // Raised before the request is sent
initializeRequest // Raised as the request is initialised (good for cancelling)
pageLoaded // Raised once the request has returned, and content is loaded
pageLoading // Raised once the request has returned, and before content is loaded
Прелесть асинхронных постбэков в том, что страница будет поддерживать высоту прокрутки без необходимости устанавливать MaintainScrollPosition, так как не происходит «полной перезагрузки страницы», в этом случае вы действительно хотите, чтобы этот эффект имел место, поэтому вы нужно будет создать его вручную.
Изменить для ответа на обновленный вопрос
Хорошо, поэтому, если вам нужно сбросить положение только при определенных нажатиях кнопок, вам нужно будет сделать что-то вроде этого:
Начните с подключения к BeginRequest, а также /
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Это потому, что в параметре args вы получаете доступ к:
args.get_postBackElement().id
Который сообщит вам идентификатор кнопки, которая запустила событие целиком - вы можете либо проверить значение здесь и переместить страницу, либо сохранить его в переменной, и запросить его в конце запроса - зная о условия гонки и т. д., когда пользователь нажимает другую кнопку до завершения вашего исходного обновления.
Это должно привести вас к удаче - есть довольно много примеров по этому поводу Работа с событиями PageRequestManager