0

Ich benutze ASP.NET, und in einem Wizard-Steuerelement habe ich Radio-Schaltflächen wo, wenn "Ja" ausgewählt ist, ein Panel angezeigt wird, aber wenn "Nein" ausgewählt ist, ist das Panel ausgeblendet. Ich habe MaintainScrollPositionOnPostBack auf True festgelegt, obwohl das ActiveStepChanged-Ereignis es in False ändert, so dass wenn Sie auf Weiter klicken, um den nächsten Assistentenschritt zu sehen, wird es an dem Anfang der Seite gestartet. Das Problem ist, dass nach dem Klicken auf "Weiter" beim ersten Klicken auf ein Optionsfeld zum Anfang der Seite gesprungen wird (die Seite behält ihre Position bei, sobald Sie nach dem ersten Mal auf ein Optionsfeld klicken). Wie verhindere ich, dass es beim ersten Mal springt?ASP.NET: Wie kann man verhindern, dass die Seite springt, wenn AutoPostBack verwendet wird?

Antwort

2

Sie können die Seite zu tun, eine vollständige Aktualisierung stoppen, indem Sie Ihre Steuerung in einem UpdatePanel

+1

es auch beachtet werden, dass sollte ein Asp Update-Panel Sie eine ASP-Skript-Manager verwenden müssen. Nur ein Skript-Manager (http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.aspx) ist pro Seite erlaubt. Es wird alle Anfragen bearbeiten. – m4tt1mus

+1

@mattimus: Guter Punkt. Um dies zu berücksichtigen (die Tatsache, dass nur ein Skriptmanager auf einer Seite sein kann), stellen Sie sicher, dass Sie keinen ScriptManager in ein Benutzersteuerelement einfügen. lege es auf eine Seite (weil du vielleicht mehr als eine UC auf einer Seite haben willst). –

+0

Danke, das funktioniert super! – Sara

3

Set Page.MaintainScrollPositionOnPostBack = true setzen die aktuelle Bildschirmposition auf Postback zu halten.

Dies ist einfacher als dies selbst mit JavaScript oder anderen Mitteln zu versuchen.

1

Ich weiß, dass dies beantwortet wurde, aber ich bin nicht in der Lage, Ajax für das Projekt zu verwenden, an dem ich arbeitete. Ich hatte ein ähnliches Problem und fand eine akzeptable Lösung. Ich habe ein Benutzersteuerelement innerhalb einer Seite, die auch eine Masterseite hat. Im Benutzersteuerelement gibt es ein Eingabeformular, das einige Steuerelemente in der Nähe des unteren Steuerelements aufweist, die das Postback auslösen. Das Hauptinhalts-Div auf der Masterseite macht dies für scrollbar (weil es zu groß ist). Die Lösung, die ich gefunden habe, war, den Seitenfokus auf ein Steuerelement für die Ereignisse zu setzen, die durch das Postback im C# code-behind ausgelöst wurden. Zum Beispiel:

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