0

私はASP.NETを使用しています。ウィザードコントロールでは、ラジオボタンがあります。「はい」を選択するとパネルが表示されますが、「いいえ」を選択するとパネルは非表示になります。 ActiveStepChangedイベントはFalseに変更されますが、次のウィザードステップを表示するために[次へ]をクリックすると、ページの先頭で開始されるように、MaintainScrollPositionOnPostBackがTrueに設定されています。問題は、[次へ]をクリックした後、最初にラジオボタンをクリックすると、ページの先頭にジャンプします(最初からラジオボタンをクリックするたびにページがその位置を保持します)。どのように私はそれが初めて飛んで停止するのですか?ASP.NET:AutoPostBackを使用しているときにページがジャンプするのを止めるには?

答えて

2

あなたはポストバックの現在の画面の位置を維持するためにUpdatePanel

+1

aspアップデートパネルを使用するには、aspスクリプトマネージャが必要です。ページあたり1つのスクリプトマネージャ(http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.aspx)のみが許可されます。すべての要求を処理します。 – m4tt1mus

+1

@mattimus:良い点。それに伴い(1つのスクリプトマネージャしかページ上に存在しないという事実)、ScriptManagerをユーザコントロールに入れないようにしてください。 1つのページに複数のUCが必要な場合があるため、そのページに配置します。 –

+0

ありがとう、それは素晴らしい作品! – Sara

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; 
} 
関連する問題