0

我正在使用ASP.NET,並且在嚮導控件中我有單選按鈕,如果選擇「是」,則顯示面板,但如果選擇「否」,面板將隱藏。我將MaintainScrollPositionOnPostBack設置爲True,但ActiveStepChanged事件將其更改爲False,以便當您單擊下一步以查看下一個嚮導步驟時,它將從頁面頂部開始。問題是,點擊下一步後,第一次點擊一個單選按鈕時,它會跳轉到頁面的頂部(當您第一次點擊單選按鈕時,頁面會保留其位置)。如何阻止它第一次跳躍?ASP.NET:如何使用AutoPostBack阻止頁面跳轉?

回答

2

您可以把你控制在UpdatePanel

+1

還應該注意的是,使用你需要一個asp腳本管理的ASP更新面板。每頁只允許有一個腳本管理器(http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.aspx)。它會處理所有的請求。 – m4tt1mus 2010-12-15 22:30:11

+1

@mattimus:好點。爲了解決這個問題(只有一個腳本管理器可以在頁面上),請確保不要將ScriptManager放在用戶控件中;把它放在一個頁面上(因爲你可能想在一個頁面上使用多個UC)。 – 2010-12-15 22:33:04

+0

謝謝,這很好! – Sara 2010-12-15 23:33:15

3

套裝Page.MaintainScrollPositionOnPostBack = true保持在回發當前屏幕位置做了充分的刷新停止頁面。

這比通過JavaScript或任何方式嘗試自己做這件事更容易。

1

我知道這個問題已經得到解答,但是我無法爲我正在研究的項目使用ajax,我遇到了類似的問題,並且找到了可接受的解決方法。我有一個頁面中的用戶控件,也有一個母版頁。在用戶控件中有一個輸入窗體,在底部附近有幾個控件用於觸發回發。母版頁上的主要內容div使它成爲可滾動的(因爲它太大)。我發現它的解決方案是將頁面焦點設置爲控制由c#代碼隱藏回發引發的事件。 例如:

protected void cbShip_CheckedChanged(object sender, EventArgs e)  
{ 
    if (cbShip.Checked) 
    { 
     pnlShip.Visible = true; 
     Page.SetFocus(ddlShipCountry); 
    } 
    else 
    { 
     pnlShip.Visible = false; 
    } 
    return; 
}