使用maintainScrollPositionOnPostBack = true滚动没有设置回发之前的位置

时间:2018-11-28 08:00:06

标签: javascript c# asp.net .net

我在asp.net中遇到一个有关滚动的问题。我希望能到达到达Updatepanel之前的位置,但我真的无法到达那里,而这是在放大chrome(110%之后)之后发生的。

这在我的本地站点中有效,但是当我将其上载到服务器时它不起作用。

<ajaxToolkit:ModalPopupExtender ID="modalPopup" runat="server" TargetControlID="UpdateProgress"
        PopupControlID="UpdateProgress" BackgroundCssClass="modalPopup" />
    <asp:UpdatePanel ID="upnComments" runat="server">
        <ContentTemplate>
            <asp:HiddenField ID="HiddenQuestion" runat="server"></asp:HiddenField>
            <div class="survey_panel">
                <asp:Panel ID="PlaceHolder1" runat="server" BorderWidth="0" HorizontalAlign="Left"
                    EnableViewState="False">
                </asp:Panel>
                <asp:Panel ID="pnlSubQuestion" runat="server" Visible="false" HorizontalAlign="Left">
                </asp:Panel>
                <asp:Label ID="lblError" runat="server" Visible="False" ForeColor="Red"></asp:Label>
                <asp:Label ID="lblError2" runat="server" Visible="False" ForeColor="Red"></asp:Label>
            </div>               
        </ContentTemplate>
    </asp:UpdatePanel>

我也为此编写了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) {
        var popup = $find('<%= modalPopup.ClientID %>');
        if (popup != null) {
            popup.show();
        }
        if ($get('ctl00_ContentPlaceHolder1_upnComments') != null) {
            xPos = $get('ctl00_ContentPlaceHolder1_upnComments').scrollLeft;
            yPos = $get('ctl00_ContentPlaceHolder1_upnComments').scrollTop;
        }
    }

    function EndRequestHandler(sender, args) {
        var popup = $find('<%= modalPopup.ClientID %>');
        if (popup != null) {
            popup.hide();
        }

        if ($get('ctl00_ContentPlaceHolder1_upnComments') != null) {
            $get('ctl00_ContentPlaceHolder1_upnComments').scrollLeft = xPos;
            $get('ctl00_ContentPlaceHolder1_upnComments').scrollTop = yPos;
        }
    }
</script>

我也写了

 protected void Page_Load(object sender, EventArgs e)
 {
    Page.MaintainScrollPositionOnPostBack = true;
 }

0 个答案:

没有答案