Asp.net 异步回发后滚动到页面顶部

Asp.net 异步回发后滚动到页面顶部,asp.net,javascript,asynchronous,code-behind,Asp.net,Javascript,Asynchronous,Code Behind,因此,我需要在asp.net更新面板中的异步帖子返回后滚动到页面顶部 我使用的代码是: Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestEventHandler); function EndRequestEventHandler(sender, args) { scrollTo(0,0); } 但是,我只希望在单击导致异步回发的某个按钮时运行此命令 如何在代码隐藏按钮事件中连接此事件 任何帮助

因此,我需要在asp.net更新面板中的异步帖子返回后滚动到页面顶部

我使用的代码是:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestEventHandler);
function EndRequestEventHandler(sender, args)
{
    scrollTo(0,0);
}
但是,我只希望在单击导致异步回发的某个按钮时运行此命令

如何在代码隐藏按钮事件中连接此事件

任何帮助都将不胜感激,谢谢

试试这个:

protected void myButon_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, typeof(MyControl), "someText", "alert('!');", true); 
}
试试这个:

protected void myButon_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, typeof(MyControl), "someText", "alert('!');", true); 
}

我对解决方案的探索终于结束了。这个问题是帮助的一部分,其余的我都找到了

必须重写ASP.NET Ajax记忆滚动位置的行为:

<script type="text/javascript"> 

var manager = Sys.WebForms.PageRequestManager.getInstance(); 

manager.add_beginRequest(beginRequest); 
function beginRequest() 
{ 
    manager._scrollPosition = null; 
} 
</script>

我对解决方案的探索终于结束了。这个问题是帮助的一部分,其余的我都找到了

必须重写ASP.NET Ajax记忆滚动位置的行为:

<script type="text/javascript"> 

var manager = Sys.WebForms.PageRequestManager.getInstance(); 

manager.add_beginRequest(beginRequest); 
function beginRequest() 
{ 
    manager._scrollPosition = null; 
} 
</script>

我用了Farinha的答案谢谢!并且稍微修改了一下,这样我就可以在我想滚动到顶部的任何地方调用该方法,但在其他地方保持滚动位置

public static void ScrollToTop(int intPosY = 0)
    {
        string strScript = @"var manager = Sys.WebForms.PageRequestManager.getInstance(); 
            manager.add_beginRequest(beginRequest); 
            function beginRequest() 
            { 
                manager._scrollPosition = null; 
            }
            window.scroll(0," + intPosY.ToString() + ");";

        Page pagCurrent = GetCurrentPage();
        ScriptManager.RegisterStartupScript(pagCurrent, pagCurrent.GetType(), string.Empty, strScript, true);

        return;
    }

public static Page GetCurrentPage()
{
    return (HttpContext.Current.Handler as Page);
}

我用了Farinha的答案谢谢!并且稍微修改了一下,这样我就可以在我想滚动到顶部的任何地方调用该方法,但在其他地方保持滚动位置

public static void ScrollToTop(int intPosY = 0)
    {
        string strScript = @"var manager = Sys.WebForms.PageRequestManager.getInstance(); 
            manager.add_beginRequest(beginRequest); 
            function beginRequest() 
            { 
                manager._scrollPosition = null; 
            }
            window.scroll(0," + intPosY.ToString() + ");";

        Page pagCurrent = GetCurrentPage();
        ScriptManager.RegisterStartupScript(pagCurrent, pagCurrent.GetType(), string.Empty, strScript, true);

        return;
    }

public static Page GetCurrentPage()
{
    return (HttpContext.Current.Handler as Page);
}

根据和的答案进行改进,代码可以简化为:

var script = 
    "Sys.WebForms.PageRequestManager.getInstance()._scrollPosition = null; " +
    "window.scrollTo(0, 0);"

ScriptManager.RegisterStartupScript(this, GetType(), "key", script, true);
我甚至不知道他们的脚本为什么会工作,因为他们添加了Sys.WebForms.PageRequestManager的scrollPosition作为add\u beginRequest处理程序的重置,这里我们实际上是从请求返回的


无论如何,在创建自己的scrollTo调用之前重置_scrollPosition绝对有效。

改进和的答案,代码可以简化为:

var script = 
    "Sys.WebForms.PageRequestManager.getInstance()._scrollPosition = null; " +
    "window.scrollTo(0, 0);"

ScriptManager.RegisterStartupScript(this, GetType(), "key", script, true);
我甚至不知道他们的脚本为什么会工作,因为他们添加了Sys.WebForms.PageRequestManager的scrollPosition作为add\u beginRequest处理程序的重置,这里我们实际上是从请求返回的


无论如何,在创建自己的scrollTo call之前重置_scrollPosition绝对有效。

我尝试过,但没有成功。有东西使页面再次向下滚动到我刚刚激活的面板。我尝试过,但没有成功。有东西使页面再次向下滚动到我刚刚激活的面板。