加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 通过Postback保留UpdatePanel中DIV的滚动位置

发布时间:2020-12-15 23:22:35 所属栏目:百科 来源:网络整理
导读:我有一个显示在div中的GridView,它包含在asp.net页面上的UpdatePanel控件中. div设置为在显示大量信息时使GridView可滚动,同时使更新面板中的其他信息保持稳定. 无论如何,GridView中的项目是可点击的,但无论我尝试什么,都不会通过回发保留包含div的滚动位置.
我有一个显示在div中的GridView,它包含在asp.net页面上的UpdatePanel控件中. div设置为在显示大量信息时使GridView可滚动,同时使更新面板中的其他信息保持稳定.

无论如何,GridView中的项目是可点击的,但无论我尝试什么,都不会通过回发保留包含div的滚动位置.目前我正在尝试用jQuery来解决这个问题,因为这似乎是最简单的方法.我的代码如下:

<head id="Head1" runat="server">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

    <script type="text/javascript">
            var scroll = function () {
                Y: '#<%= scrollPos.ClientID %>'
            };

            $(document).ready(function () {
                $("#subResults").scrollTop($(scroll.Y).val());

                $('#subResults').scroll(function () {
                    $(scroll.Y).val(this.scrollTop);
                });
            });
        </script>
    </head>

    <body>
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <asp:UpdatePanel ID="resultPanel" runat="server" ChildrenAsTriggers="True" UpdateMode="Conditional">
            <ContentTemplate>
                <div id="subResults">
                    <asp:GridView ID="resultGrid" runat="server"
                                    AutoGenerateColumns="false" Visible="True"
                                    AutoGenerateSelectButton="True"
                                    OnRowDataBound="resultGrid_RowDataBound"
 OnSelectedIndexChanged="resultGrid_SelectedIndexChanged">
                        <Columns>
                            // columns columns columns...
                        </Columns>
                    </asp:GridView>
                    <asp:HiddenField ID="scrollPos" runat="server" Value="0" />
                </div>
    </body>

我正在使用给定here的示例.无论我是否尝试完全按照给定的方式执行此操作,它都不起作用:我的GridView项目接受单击,执行它应该执行的操作,然后将GridView滚动回到在Postback完成后再次返回顶部.如何让我的div“subResults”通过Postback保持其滚动位置?

解决方法

解决.下面的代码块粘贴在我的脚本管理器对象下面,使得滚动div按照我想要的方式运行:

<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('scrollDiv').scrollLeft;
        yPos = $get('scrollDiv').scrollTop;
    }
    function EndRequestHandler(sender,args) {
        $get('scrollDiv').scrollLeft = xPos;
        $get('scrollDiv').scrollTop = yPos;
    }
</script>

归功于Andrew Frederick

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读