【问题标题】:Using Javascript of maintain scroll position preventing postback使用保持滚动位置的Javascript防止回发
【发布时间】:2013-09-19 18:01:25
【问题描述】:

在这里研究后:

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。我该如何解决这个问题?

【问题讨论】:

  • 尝试将按钮放在ID为pagingPanel的Panel中。

标签: javascript asp.net


【解决方案1】:

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

如果您将其设置为 true,它应该在回发时保持 Scrool 位置。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您是否检查了浏览器的控制台调试?我使用了相同的解决方案,当我单击位于 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
    

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

    【讨论】:

      猜你喜欢
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多