2011-02-18 76 views
1

如何在部分回發後保持滾動條在Ajax TabContainer Tabpanel中的位置?到目前爲止,我嘗試了以下腳本,但它不會檢索位置。在Postback後在Ajax TabContainer的TabPanel中維護滾動條顯示

<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> 
+0

如果您不更新TabContainer的外部UpdatePanel,而是從TabPanel更新滾動條,則不應該移動滾動條。 – 2011-02-18 20:58:48

回答

0

這確實能夠提供您設置腳本控件屬性的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之後運行。

1

可以包括MaintainScrollPositionOnPostback上<%@頁%>指令,如:

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

有了這個,JavaScript是自動由ASP.NET生成。但是,如果將您的控件包裝到UpdatePanel中,則沒有理由發生完整的回發並因此丟失位置。