【问题标题】:Set javascript ScrollTo after submit form with updatepanel and masterpages使用更新面板和母版页提交表单后设置 javascript ScrollTo
【发布时间】:2013-06-12 15:10:29
【问题描述】:

我在更新面板中有一个带有提交功能的表单。

为了测试它,我使用了警报,这工作正常。我提交表单并弹出警报。所以代码是有效的。

protected void SendProfileForm_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), 
    "ScrollTo", "alert('test');", true);
}

现在我把它改成这个,它什么都不做。

protected void SendProfileForm_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), 
    "ScrollTo", "window.scrollTo(0, 500);", true);
}

如果我使用此代码执行 onclientclick window.scrollTo(0, 500);然后它正在工作。所以这个 javascript 代码是有效的。

我做错了什么。

【问题讨论】:

    标签: c# javascript asp.net updatepanel


    【解决方案1】:

    由于您发布的是异步调用,因此您必须使用ScriptManager 客户端 API:

    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(MyScrollTo);
    

    这将在每次页面加载时触发 function。所以你需要为这项工作编写一些逻辑:

    var needScroll;
    
    function MyScrollTo(){
         if(needScroll){
            window.scrollTo(0,500);
         }
    }
    

    所以你的服务器端代码需要设置needScroll变量:

    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), 
        "ScrollTo", "var needScroll = true;", true);
    

    如果您想了解更多关于 ScriptManager 客户端 API 的信息,请查看 here

    【讨论】:

    • 你有例子吗?我调查了它,但我无法让它工作。我必须从后面的代码动态调用脚本,因为我想滚动到页面上的不同部分。谢谢。
    • 我详细说明了我的答案。你能再试一次吗?如果它第一次有效,请再试一次。有时ScriptManager 不喜欢你直接使用javascript。
    猜你喜欢
    • 2014-03-09
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多