在部分回发ASP.NET上维护面板滚动位置

Sha*_*hin 20 asp.net postback scroll updatepanel

我有一个在ASP.NET Panel中放置的gridview.面板和Gridview都在UpdatePanel中.gridview中有一列导致部分PostBacks.我想在这些回发上保持Panel Scroll位置.有什么办法吗?问候.

Waq*_*aja 40

在asp.net中没有可以解决它的内置工具

但是,这个问题有一个解决方法; 你需要用javascript来处理它.

这里提到了解决方案:在部分PostBack后维护UpdatePanel内的滚动条位置

编辑于2012年5月20日; 看到评论后

<form id="form1" runat="server">
  <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('<%=Panel1.ClientID%>') != null) {
          // Get X and Y positions of scrollbar before the partial postback
          xPos = $get('<%=Panel1.ClientID%>').scrollLeft;
          yPos = $get('<%=Panel1.ClientID%>').scrollTop;
        }
     }

     function EndRequestHandler(sender, args) {
         if ($get('<%=Panel1.ClientID%>') != null) {
           // Set X and Y positions back to the scrollbar
           // after partial postback
           $get('<%=Panel1.ClientID%>').scrollLeft = xPos;
           $get('<%=Panel1.ClientID%>').scrollTop = yPos;
         }
     }

     prm.add_beginRequest(BeginRequestHandler);
     prm.add_endRequest(EndRequestHandler);
 </script>

 <asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
     <asp:Panel ID="Panel1" runat="server" Height="300">
        <%-- Some stuff which would cause a partial postback goes here --%>
     </asp:Panel>
   </ContentTemplate>
 </asp:UpdatePanel>

</form>
Run Code Online (Sandbox Code Playgroud)

以下是代码快照: -

部分PostBack后,在UpdatePanel内维护滚动条位置

  • 它适用于jQuery更改`$ get(`for` $(`和使用`scrollLeft()`而不仅仅是'scrollLeft`) (2认同)

vml*_*l19 5

将MaintainScrollPositionOnPostback ="true"添加到页面指令中.

  • 它不会导致它只保持页面的滚动位置而不是div或面板 (8认同)