asp.net - 当更新面板位于主页中时保持滚动位置

标签 asp.net updatepanel partial-postback

我在母版页中放置了脚本管理器和更新面板。

            <div id="nav">
               <asp:ScriptManager ID="ScriptManager1" runat="server"/>
            </div>
            <div id="mainchild">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:ContentPlaceHolder ID="HdrContentPlaceholderBody" runat="server">
                    </asp:ContentPlaceHolder>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>

所以这个 div 位于母版页中,而我的子页面在面板内放置了一个 GridView 。

      <asp:Content ID="pagecontent" ContentPlaceHolderID="HdrContentPlaceholderBody" runat="server">
           <asp:Panel ID="pnlAssignRole" runat="server" CssClass="popuppnl" Visible="false">
             <div class="close-image">
               <asp:ImageButton ID="ImageButton2" ToolTip="Close" runat="server" ImageUrl="~/App_Themes/Images/Close1.png" OnClick="btnAsgnCancel_Click" />
            </div>
            <table width="100%">
                <tr>
                    <td>
                        <div style="height: 600px; overflow: auto;">
                            <asp:GridView ID="grdEmpAssigned">
                            gridview content
                            </GridView>
                        </div>
                    </td>
                </tr>
            </table>
        </asp:Content>

在 rowcommand 上的 gridview 中,它会导致部分回发,我尝试将这段 javascript 放在 updatepanel 下方以及母版页和内容页面中的 scriptmanager 下方,它没有帮助..我想我没有找到放置的位置这个 JavaScript

      <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) {
                        try {
                            yPos = $get('ctl00_MainContent_scroll').scrollTop;
                            }
                        catch (err) { }
                    }
                    function EndRequestHandler(sender, args) {
                        try {
                            $get('ctl00_MainContent_scroll').scrollTop = yPos;
                            }
                        catch (err) { }
                    }
         </script>

请指导我。

最佳答案

请浏览此链接。这可能对你有帮助。 http://dotnetcrunch.wordpress.com/2011/08/05/maintain-scroll-position-for-the-whole-page-after-asynchronous-postback/

这是上面链接中的代码。将其放入网站的标题部分。

<script type=”text/javascript”>
     var xPos, yPos;
     Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
     Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(EndRequestHandler);

     function BeginRequestHandler(sender, args) {
         xPos = document.body.scrollLeft;
         yPos = documnet.body.scrollTop;
     }

     function EndRequestHandler(sender, args) {
         document.body.scrollLeft = xPos;
         document.body.scrollTop = yPos;
     }
</script>

关于asp.net - 当更新面板位于主页中时保持滚动位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16835437/

相关文章:

c# - 为什么我的是int?是否需要验证值?

java - 如何推送选定的选项卡更新(java swing)?

ajax - 模态弹出扩展器是否需要更新面板?

c# - 单击超链接会导致更新面板执行完整回发吗?

c# - 部分回发后 jQuery 不工作

jquery 隐藏/显示在页面部分回发后不起作用

c# - 如何强制 ValidationAttribute 将指定的对象成员标记为无效?

c# - 我应该在 Page_Init 中以编程方式添加控制事件处理程序吗?

c# - ASP.NET Core 2.1 Web API 添加JWT 认证的同时,是否需要像AspNetUsers 这样创建表?

c# - 嵌套更新面板 : Why does ChildrenAsTriggers have no effect?