Asp.net 异步回发后滚动到页面顶部
因此,我需要在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); } 但是,我只希望在单击导致异步回发的某个按钮时运行此命令 如何在代码隐藏按钮事件中连接此事件 任何帮助
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绝对有效。我尝试过,但没有成功。有东西使页面再次向下滚动到我刚刚激活的面板。我尝试过,但没有成功。有东西使页面再次向下滚动到我刚刚激活的面板。