gridview с большим количеством страниц, возвращенных без сохранения позиции прокрутки - PullRequest
1 голос
/ 28 марта 2012

У меня проблема с сохранением позиции прокрутки.

Я почти уверен, что у меня все настроено правильно. Я обновил свою веб-конфигурацию ...

<pages maintainScrollPositionOnPostBack="true"

и, кажется, все работает до тех пор, пока ....

Когда мой Gridview возвращает много страниц, например, более 50, иногда более 100 и более, я показываю 50 записей на странице. Чем дальше в Gridview, тем больше положение прокрутки отключено.

Итак, я говорю, что для первых 20 с лишним страниц или около того, если я прокручиваю страницу вниз до точки, где верхние строки переместились за пределы экрана, и я вхожу в режим редактирования, правильная запись остается в поле зрения. Postback.

Но если я перевалил за 30 страниц в Gridview, то чем дальше, тем хуже становится, когда я вхожу в режим редактирования, мне приходится прокручивать обратно к месту записи, которое я выбрал для редактирования.

Любые идеи по этому вопросу будут проверены, мои пользователи сходят с ума !!!

Еще раз спасибо,

Ответы [ 2 ]

1 голос
/ 30 марта 2012

Вы можете обернуть gridview в набор div с помощью overflow: auto.Затем с помощью js сбросьте положение прокрутки при загрузке страницы.что-то вроде этого.

<body onload="GetDivPosition()">
<form id="form1" runat="server">

<asp:HiddenField ID="hdnField" runat="server" Value="0" />

<div style="overflow:auto;" ID="gridArea" onscroll="SetDivPosition()">

<asp:GridView ID="yourGrid" runat="server">
      .....
</asp:GridView>

</div>


<script language="javascript" type="text/javascript">

        function GetDivPosition() {
            var hdn = document.getElementById("hdnField");
            document.getElementById("gridArea").scrollTop = hdn.value;
        }

        function SetDivPosition() {
            var hdn = document.getElementById("hdnField");
            hdn.value = document.getElementById("gridArea").scrollTop;
        }
</script>

Возможно, Visual Studio предупредит вас, что прокрутка недействительна, но она всегда работала для меня.Если вы используете панель обновления, это немного сложнее.На самом деле все мои находятся на панелях обновления, поэтому я попытался вернуть этот код обратно, так что, надеюсь, это сработает для вас.

0 голосов
/ 28 марта 2012

Свойство MaintainScrollPositionOnPostBack работает только в IE, поэтому если это не ситуация в Интранете, когда все используют IE, то это не хорошее решение. Существуют взломы browserCaps для других браузеров, но даже Microsoft не поддерживает это.

Если вы используете пейджинг, то самый простой вариант - уменьшить количество записей на странице. Остается только другой «чистый» вариант - накатить собственное решение jQuery.

Вот подход без использования свойства MaintainScrollPositionOnPostback:

http://www.kodergurl.com/2010/08/maintain-scroll-position-on-post-back.html

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