使用Javascript维护滚动位置防止回发

时间:2013-09-19 18:01:25

标签: javascript asp.net

在这里研究之后:

Maintain Panel Scroll Position On Partial Postback ASP.NET

我添加了在回发时保持滚动位置的功能:

    <div id="pagingPanelDiv">
        <asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release" />
        <script type="text/javascript">
            // It is important to place this JavaScript code after ScriptManager1
            var xPos, yPos;
            var prm = Sys.WebForms.PageRequestManager.getInstance();

            function BeginRequestHandler(sender, args) {
                if ($get('<%=pagingPanel.ClientID%>') != null) {
                // Get X and Y positions of scrollbar before the partial postback
                xPos = $get('<%=pagingPanel.ClientID%>').scrollLeft;
                yPos = $get('<%=pagingPanel.ClientID%>').scrollTop;
            }
        }

        function EndRequestHandler(sender, args) {
            if ($get('<%=pagingPanel.ClientID%>') != null) {
           // Set X and Y positions back to the scrollbar
           // after partial postback
           $get('<%=pagingPanel.ClientID%>').scrollLeft = xPos;
           $get('<%=pagingPanel.ClientID%>').scrollTop = yPos;
       }
   }
   prm.add_beginRequest(BeginRequestHandler);
   prm.add_endRequest(EndRequestHandler);
        </script>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Panel ID="pagingPanel" runat="server" Height="50px" Width="1175px" ScrollBars="Horizontal" Wrap="false"></asp:Panel>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>

问题在于,现在按下按钮时不会发生回发,因此按钮不会像我想要的那样更新gridview。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

为什么不使用内置的“MaintainScrollPositionOnPostback”作为@Page指令的一部分。

如果您将其设置为true,则应将Scrool位置保留在Postback上。

希望这有帮助。

答案 1 :(得分:0)

您是否检查过浏览器的控制台调试?我使用相同的解决方案,当我点击位于gridview行的更新面板内的按钮时,我看到下面的错误,没有更多的事情发生(它没有回帖):

POST http://localhost:37158/Issues/ScheduledNotes.aspx 500 (Internal Server Error) ScriptResource.axd?d=Xrr7TH9urSaaTnw8W2o5y8u0hPDzkm3GN-PAUDkj7QXbj4srXDMFfsYEcxq9JlkF8RMkpxmbT6sI3n…:6066
Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 500 ScriptResource.axd?d=Xrr7TH9urSaaTnw8W2o5y8u0hPDzkm3GN-PAUDkj7QXbj4srXDMFfsYEcxq9JlkF8RMkpxmbT6sI3n…:237

该错误仅与更新面板有关,而且与整个解决方案无关,因为我尝试仅添加更新面板并显示相同的错误。