MaintainScrollPositionOnPostback不起作用?

时间:2016-06-29 18:55:42

标签: c# asp.net

我有一个包含两个下拉列表的页面(ddlA和ddlB) 一旦用户从ddlA中选择一个项目,它将填充ddlB中的项目 我为ddlA打开了自动回发功能。

因为我想保持滚动位置,所以我在页面加载方法中将MaintainScrollPositionOnPostBack打开为true。 :

service httpd stop
sleep 10s
service mysqld restart
service httpd start

但这似乎无法解决问题。

是否有解决方法来解决问题。?

- 更新 -

我将这个js代码添加到页面中,现在的问题是autopost背面永远不会发生..

this.MaintainScrollPositionOnPostBack = true;

我是否错误地添加了js代码?我找到了here

2 个答案:

答案 0 :(得分:0)

尝试将其添加到ASPX文件中的 Page 指令并测试该路由。

<%@ Page Title="" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" MaintainScrollPositionOnPostback="true" Inherits="_Default" %>

答案 1 :(得分:0)

无论我尝试什么,我都无法让MaintainScrollPositionOnPostback 为我工作。基于此答案 (https://stackoverflow.com/a/27505983) 及其下方的评论,我尝试了以下对我有用的代码。这仅在您的页面上有 ASP.NET ScriptManager(即 MicrosoftAjax.js)时才有效。您还需要将 JQuery 添加到您的页面。将以下代码添加到 .aspx 文件中 asp:ScriptManager 标记下方的某个位置。

<asp:HiddenField runat="server" ID="hfPosition" Value="" />
<script type="text/javascript">
    $(function () {
        var positionField = $("#<%=hfPosition.ClientID%>");
        window.onscroll = function () {
            var position = $(window).scrollTop();
            positionField.val(position);
        };
    });

    function pageLoad() {
        var positionField = $("#<%=hfPosition.ClientID%>");
        var position = parseInt(positionField.val());
        if (!isNaN(position)) {
            $(window).scrollTop(position);
        }
    };
</script>

基本上,我们将滚动位置保存在名为 hfPosition 的隐藏字段的值中。每当页面滚动时,该值都会更新。然后当回发发生时,pageLoad() 将自动被调用并获取 hfPosition 的值并滚动到该值。

包括 ScriptManager 和 JQuery,我的最终代码片段如下所示:

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script src="../Scripts/jquery-3.3.1.min.js" type="text/javascript"></script>
<asp:HiddenField runat="server" ID="hfPosition" Value="" />
<script type="text/javascript">
    $(function () {
        var positionField = $("#<%=hfPosition.ClientID%>");
        window.onscroll = function () {
            var position = $(window).scrollTop();
            positionField.val(position);
        };
    });

    function pageLoad() {
        var positionField = $("#<%=hfPosition.ClientID%>");
        var position = parseInt(positionField.val());
        if (!isNaN(position)) {
            $(window).scrollTop(position);
        }
    };
</script>/>