1

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

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

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代码正在工作。

我究竟做错了什么。

4

1 回答 1

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 的更多信息,请查看此处

于 2013-06-12T16:21:38.370 回答