Проблема с полосой прокрутки панели обновления Ajax
-
05-07-2019 - |
Вопрос
У меня есть одна панель обновлений, внутри которой есть список данных.
Эта панель обновления срабатывает каждую 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>