Вопрос

У меня есть одна панель обновлений, внутри которой есть список данных.

Эта панель обновления срабатывает каждую 1 секунду, чтобы извлечь данные из базы данных.

Я сохранил эту панель обновления внутри тега div с вертикальной прокруткой.

Но когда я получаю новые данные, полоса прокрутки не настраивается автоматически !!!

Я пробовал опцию keepasrollback, но она не работает.

Можно ли сохранить полосу прокрутки в исходном положении после срабатывания панели обновления?

Это было полезно?

Решение

Вот что я предпочитаю избегать JavaScript, который должен корректировать положение прокрутки при каждом обновлении / обновлении ...

Полагаю, у вас есть оформленная страница, как показано ниже

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional/Always">
    <ContentTemplate>
        <div style="height: 400px/300px; overflow-y:scroll;"> 
            <asp:DataList ID="DataList1" runat="server">
                ....
            </asp:DataList>
        </div>
    </ContentTemplate>
</asp:UpdatePanel>

Измените его на нечто подобное, чтобы позаботиться о проблеме с прокруткой

<div style="height: 400px/300px; overflow-y:scroll;"> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional/Always">
        <ContentTemplate>
                <asp:DataList ID="DataList1" runat="server">
                    ....
                </asp:DataList>
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

Другие советы

Пожалуйста, попробуйте это:

<script>
  var prm = Sys.WebForms.PageRequestManager.getInstance();
  prm.add_beginRequest(function(){
     window.dTop = document.getElementById('divIdHere').scrollTop;
  });

  prm.add_endRequest(function(){
       setTimeout(function(){
         document.getElementById('divIdHere').scrollTop = window.dTop;
      },100);
  });
</script>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top