Сохранение публикации полосы прокрутки в TabPanel Ajax TabContainer после обратной передачи - PullRequest
1 голос
/ 18 февраля 2011

Как сохранить положение полосы прокрутки в панели вкладок Ajax TabContainer после частичной обратной передачи? Пока что я попробовал следующий скрипт, но он не получит позицию.

 <script type="text/javascript">
    var xPos, yPos;
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(BeginRequestHandler);
    prm.add_endRequest(EndRequestHandler);
    function BeginRequestHandler(sender, args) {
        xPos = $get('<%=InputTabPanel.ClientID%>').scrollLeft;
        yPos = $get('<%=InputTabPanel.ClientID%>').scrollTop;
    }
    function EndRequestHandler(sender, args) {
        $get('<%=InputTabPanel.ClientID%>').scrollLeft = xPos;
        $get('<%=InputTabPanel.ClientID%>').scrollTop = yPos;
    }
</script>

Ответы [ 2 ]

1 голос
/ 28 мая 2011

Вы можете включить MaintainScrollPositionOnPostback в директиву <% @ Page%>, например:

<%@ Page Language="C#" MaintainScrollPositionOnPostback="true" %>

При этом javascript автоматически генерируется ASP.NET. Но если ваш элемент управления обернут в UpdatePanel, нет никаких оснований для полной обратной передачи и последующей потери позиции.

0 голосов
/ 03 декабря 2012

Это действительно работает, если вы задаете CombineScripts = True для свойств элемента управления сценарием и при использовании страницы содержимого помещаете сценарий или ссылку на файл сценария в BodyContent. Смотри ниже ...

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    ...move script at the top of the BodyContent area        
</asp:Content

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <script src="Scripts/site.js" type="text/javascript"></script>

    <div>
        ...markup
    </div>

</asp:Content>

Ниже находится в моем файле site.js

//-------------------------------------------------------//
// 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_Panel1').scrollTop;
    yProductPanel = $get('MainContent_Panel2').scrollTop;
}
function EndRequestHandler(sender, args) {
    $get('MainContent_Panel1').scrollTop = yInputPanel;
    $get('MainContent_Panel2').scrollTop = yProductPanel;
}

Примечание. Вы можете получить сообщение об ошибке «Ошибка времени выполнения Microsoft JScript:« Sys »не определен», если вы не переместите сценарий js в BodyContent. Скрипт должен запускаться после ScriptManager.

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