Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用母版页维护滚动位置异步部分页回发Ajax_C#_Javascript_Asp.net_Webforms - Fatal编程技术网

C# 使用母版页维护滚动位置异步部分页回发Ajax

C# 使用母版页维护滚动位置异步部分页回发Ajax,c#,javascript,asp.net,webforms,C#,Javascript,Asp.net,Webforms,我还没有弄清楚如何使用母版页来实现这一点 我希望在部分页面回发后保持页面的滚动位置,而不是子元素 这个脚本是在stackoverflow上找到的,我已经逐步完成并调试了它,注意,我添加了警报以查看它是否真的命中了代码。它确实会触发警报,并且它们是正确的滚动位置。但是,在部分页面回发之后,页面最终会卷回顶部 母版页: <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="so

我还没有弄清楚如何使用母版页来实现这一点

我希望在部分页面回发后保持页面的滚动位置,而不是子元素

这个脚本是在stackoverflow上找到的,我已经逐步完成并调试了它,注意,我添加了警报以查看它是否真的命中了代码。它确实会触发警报,并且它们是正确的滚动位置。但是,在部分页面回发之后,页面最终会卷回顶部

母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="somesite.SiteMaster" %>

<!DOCTYPE html>
<html lang="en">
<head runat="server">
    <meta charset="utf-8" />
    <title><%: Page.Title %>Master Page</title>
</head>
<body>

<form runat="server" enctype="multipart/form-data">
<ajaxToolkit:ToolkitScriptManager runat="server" EnablePageMethods="true" ScriptMode="Release">
<Scripts>
    <asp:ScriptReference Path="~/Scripts/jquery-1.8.2.min.js" />
    <asp:ScriptReference Name="WebForms.js" Path="~/Scripts/WebForms/WebForms.js" />
    <asp:ScriptReference Name="WebUIValidation.js" Path="~/Scripts/WebForms/WebUIValidation.js" />
    <asp:ScriptReference Name="MenuStandards.js" Path="~/Scripts/WebForms/MenuStandards.js" />
    <asp:ScriptReference Name="GridView.js" Path="~/Scripts/WebForms/GridView.js" />
    <asp:ScriptReference Name="DetailsView.js" Path="~/Scripts/WebForms/DetailsView.js" />
    <asp:ScriptReference Name="TreeView.js" Path="~/Scripts/WebForms/TreeView.js" />
    <asp:ScriptReference Name="WebParts.js" Path="~/Scripts/WebForms/WebParts.js" />
    <asp:ScriptReference Name="Focus.js" Path="~/Scripts/WebForms/Focus.js" />
    <asp:ScriptReference Name="WebFormsBundle" />
</Scripts>
</ajaxToolkit:ToolkitScriptManager>

     <asp:ContentPlaceHolder runat="server" ID="NavigationPlaceHolder" />
<div id="divMainContent" class="divMainContent">
     <asp:ContentPlaceHolder runat="server" ID="MainContentPlaceHolder" />
</div>

母版页
子页面

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="page.aspx.cs" Inherits="somesite.page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="NavigationPlaceHolder" runat="server">
<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 = document.body.scrollLeft;
     yPos = document.documentElement.scrollTop;
     alert(yPos);
     }

     function EndRequestHandler(sender, args) {
     //document.body.scrollLeft = xPos;
     document.documentElement.scrollTop = yPos;
     alert(yPos);
     }
     </script>
     <!-- Provides Twitter Typeahead functionality -->
<script src="Scripts/typeahead.min.js" type="text/javascript"></script>
<script src="Scripts/hogan/hogan.js"></script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
    <asp:UpdatePanel runat="server" ID="updPnlClearVendorNameSessionVariable">
       <ContentTemplate>
          <asp:Button runat="server" ID="btnSearch" OnClick="btnSearch_Click" />
       </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

var xPos,yPos;
var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
函数BeginRequestHandler(发送方,参数){
//xPos=document.body.scrollLeft;
yPos=document.documentElement.scrollTop;
警报(yPos);
}
函数EndRequestHandler(发送方,参数){
//document.body.scrollLeft=xPos;
document.documentElement.scrollTop=yPos;
警报(yPos);
}

将此脚本添加到您的页面。确保您已在页面中注册

<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>

var xPos,yPos;
var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);
prm.add_endRequest(EndRequestHandler);
函数BeginRequestHandler(发送方,参数){
xPos=$get('scrollDiv')。scrollLeft;
yPos=$get('scrollDiv')。scrollTop;
}
函数EndRequestHandler(发送方,参数){
$get('scrollDiv')。scrollLeft=xPos;
$get('scrollDiv')。scrollTop=yPos;
}