Сохранить положение прокрутки после асинхронной обратной передачи с панели обновления - PullRequest
9 голосов
/ 05 июля 2011

У меня проблемы с asp.net и панелью обновления.Проблема в том, что каждый раз, когда происходит частичная обратная передача с панели обновления, страница прокручивается вверх.На большинстве моих страниц это не такая большая проблема, но на некоторых страницах это может занять довольно много времени.Затем, когда пользователь находится внизу страницы, я показываю всплывающее окно jQuery с RadListView, и пользователь может выбрать элемент в этом списке.Но нажатие на этот элемент вызывает частичную обратную передачу, и страница переходит наверх.

Я просмотрел интернет и не смог найти решения своей проблемы.Конечно, настройка MaintainScrollPositionOnPostback ничего не делает.

Кто-нибудь знает что-нибудь, что может помочь мне справиться с этой проблемой?

Cheers, Pako

Ответы [ 2 ]

1 голос
/ 13 июля 2015

Для этого есть небольшой обходной путь, который я давно использовал в ERP.Не уверен, что это лучшее решение, но оно работает.

Я не знаю, используете ли вы пользовательский класс Page или класс по умолчанию System.Web.UI.Page, но я постараюсь объяснить вам, как высделайте это, и тогда вы узнаете, как лучше всего реализовать это в своей среде, хорошо?

Вы создадите HiddenField, например, с идентификатором "hfScrollPosition".

Затем вы создадите событие javascript: document.onscroll или что-то в этом роде, а внутри события вы обновите скрытое поле, чтобы получить текущую позицию прокрутки.Например: document.getElementById("hfScrollPosition").value = document.documentElement.scrollTop;

При этом элемент управления ASP.NET динамически обновляет свое значение в соответствии с положением прокрутки тела.Поэтому, когда какой-то элемент управления на вашей странице выполняет обратную передачу, вы можете поместить следующий код javascript в событие Page_Load:

document.documentElement.scrollTop = document.getElementById("hfScrollPosition").value;

Таким образом, каждый раз, когда ваша страница получает обратную передачу, телоПоложение прокрутки будет корректно обновлено.


РЕДАКТИРОВАТЬ : Я создал скрипку для имитации: https://jsfiddle.net/j26fpgzo/

0 голосов
/ 09 апреля 2015

Используйте идентификатор некоторого элемента управления в повторителе и используйте JQuery для прокрутки после завершения обратной передачи.

Вы можете получить идентификатор некоторого элемента управления в соответствии с форматом, который они генерируют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...