Fehlermeldung bei Verwendung eines UpdatePanel in einem WizardControl

Szenario

Ein ASP.NET-Ajax-UpdatePanel wird innerhalb eines ASP.NET-Wizard-Steuerelements verwendet. Genauer gesagt innerhalb eines WizardStep-Tags.

Fehlermeldung

Es trat beim Aufruf einer ASPX-Seite mit dieser Konstellation folgende Fehlermeldung auf:

Cannot unregister UpdatePanel with ID ‚myUpdatePanel‘ since it was not registered with the ScriptManager. This might occur if the UpdatePanel was removed from the control tree and later added again, which is not supported.

Parametername: updatePanel

Ursache

Wie ich nach langem Hin-und-her herausgefunden habe war folgender Code die Ursache (ja, Visual Basic.NET, shame on me, der Kunde will das so):

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
MyWizard.DisplaySideBar = False
End Sub

Ich hatte also im Load-Ereignis der Seite, die das Wizard-Steuerelement enthalten hat die DisplaySideBar-Eigenschaft geändert.

Dies hat unmittelbar zu der oben beschriebenen Fehlermeldung geführt. Andere Eigenschaften, wie z.B. ActiveStepIndex, hatten nicht zu dem Fehler geführt und korrekt funktioniert.

Lösung

Eine Lösung die sich für mich als benutzbar erwiesen hat war, dass ich die DisplaySideBar-Eigenschaft deklarativ gesetzt habe. Also direkt im ASPX-Markup.

Das war aber für mich ungeeignet, da ich die Eigenschaft im Design-Modus auf True haben wollte und nur zur Laufzeit auf False.

Deshalb habe ich nach etwas längerem Ausprobieren herausgefunden, dass wenn ich die DisplaySideBar-Eigenschaft zu einem „früheren“ Zeitpunkt setze, diese korrekt funktioniert, ohne einen Fehler zu produzieren.

Und zwar im PreRender-Ereignis des Wizard-Steuerelements selbst:

Protected Sub MyWizard_PreRender(ByVal sender As Object, ByVal e As System.EventArgs)
    MyWizard.DisplaySideBar = False
End Sub

Damit hat alles wie gewünscht funktioniert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.