Поскольку вы используете 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
person
Zhaph - Ben Duguid
schedule
05.03.2009