Прокрутка списка вверх на автоответчик

Почему список asp.net всегда прокручивается вверх при выборе элемента, когда автоответчик включен? Как я могу предотвратить это?

4 ответа

Решение

Я добавил следующий jquery в javascript, чтобы исправить проблему. Я не могу вспомнить, где я нашел решение, но вот оно. Просто добавьте местоположение вашего целевого элемента управления - $get('YourDiv_YourPanel').

<script type="text/javascript">
    //Maintain scroll position in given element or control
    var xInputPanel, yInputPanel;
    var xProductPanel, yProductPanel;
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(BeginRequestHandler);
    prm.add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args) {
        yInputPanel = $get('MainContent_InputPanel').scrollTop;
        yProductPanel = $get('MainContent_ProductPanel').scrollTop;
    }
    function EndRequestHandler(sender, args) {
        $get('MainContent_InputPanel').scrollTop = yInputPanel;
        $get('MainContent_ProductPanel').scrollTop = yProductPanel;
    }
</script>

У меня была такая же проблема, и я нашел способ сделать это с помощью панелей обновления. Я считаю, что это происходит из-за того, что список обновляется при обратной передаче, поэтому панели обновления могут помочь нам убедиться, что он не обновляется. Убедитесь, что список находится внутри панели условного обновления с дочерними элементами в качестве триггеров, установленных на "ложь":

 <asp:UpdatePanel runat="server" ID="updtpnlSearchResults" UpdateMode="Conditional" ChildrenAsTriggers="false">

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

Вам нужна эта директива страницы:

<%@ Page MaintainScrollPositionOnPostback="true" ... %>

У вас есть несколько вариантов. Вы можете либо установить для MaintainScrollPositionOnPostBack значение true в директиве страницы, либо поместить список на панель обновлений и использовать AJAX для поддержания позиции прокрутки.

Опция директивы страницы:

<pages maintainScrollPositionOnPostBack="true" />

Опция обновления панели:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:ListBox ID="ListBox1" runat="server" ...>
    </ContentTemplate>
</asp:UpdatePanel>
Другие вопросы по тегам