2013-06-12 17 views
1

我在updatepanel中有一個提交函數的表單。用updatepanel和masterpages提交表單後設置javascript ScrollTo

要測試它我使用警報,這工作正常。我提交表單並彈出警報。所以代碼正在工作。

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

我在做什麼錯。

回答

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

+0

你有個例子嗎?我看着它,但我無法實現它的工作。我必須從後面的代碼中動態調用腳本,因爲我想滾動到頁面上的不同部分。謝謝。 –

+0

我詳細闡述了我的答案。你可以再試一次嗎?如果它第一次運作,請再試一次。有時'ScriptManager'不喜歡你直接使用javascript。 –

+1

非常好..它正在工作..謝謝。 –