Ich habe den Eindruck, dass ein Steuerelement in einem geschachtelten UpdatePanel das UpdatePanel auf der obersten Ebene aktualisiert (und somit beide UpdatePanels aktualisiert), da alle Ereignisse auf diesem Steuerelement als "impliziter" Auslöser fungieren. Ist das korrekt?Verschachtelte UpdatePanel führt Eltern zum Postback?
Ich habe auf Draht so etwas wie dies versucht Up-
UserControl
Parent UpdatePanel
"Show" button
ASP:Panel
Dynamically added UserControls, each with UpdatePanels
Wenn die Schaltfläche Anzeigen geklickt wird, die ASP: Panel wird sichtbar und startet Benutzersteuerelemente zu sich selbst hinzufügen, dynamisch basierend auf einigen Back-End Logik.
Jedes der dynamisch hinzugefügten Steuerelemente (im Folgenden: UserControls) verfügt über eigene ATLAS-fähige Schaltflächen und Links, sodass sie auch über UpdatePanels verfügen. Derzeit, wenn ich auf einen Link in einem der UserControls klicke, verschwindet der gesamte Inhalt des ASP: Panels, als würde es wieder gerendert werden. Alle meine dynamisch hinzugefügten Steuerelemente verschwinden und keines ihrer Klickereignisse wird im Debugger abgefangen.
Ich nehme an, was hier passiert, ist, dass Steuerelemente, die in geschachtelten Update-Panels liegen, das Eltern-UpdatePanel zurück schreiben, weil sie "implizite" Trigger auslösen. Gibt es eine Möglichkeit für meine UserControls, autonom zu arbeiten und sich nicht mit dem ASP zu messen: Panel, das sie enthält?
Wenn nicht, welche Strategie sollte ich hier verfolgen? Wenn ich das gesamte ASP: Panel jedes Mal neu rendern muss, wenn ein Ereignis auf einem der (möglicherweise vielen) UserControls auftritt, muss ich die UserControls neu erstellen, was ein wenig Aufwand erfordert. Ich muss auch eine Art von Ansichtszustand bewahren, um sie wiederherzustellen. Ich bin etwas neu in ASP.NET und das klingt einschüchternd. Ich würde lieber nie die obere Ebene UserControl und ASP: Panel aktualisieren, wenn ich es vermeiden kann, und lassen Sie jede der dynamisch hinzugefügten UserControls ihre eigenen Ereignisse asynchron auslösen und behandeln.
EDIT: Anstatt die Steuerelemente dynamisch hinzuzufügen, habe ich sie zum Markup hinzugefügt (keine schlechte Lösung). So wurde das Problem des Verschwindens von Steuerelementen beseitigt, da die Steuerelemente jetzt nicht dynamisch hinzugefügt werden, sondern stattdessen im Markup vorhanden sind. Aber immer noch ist die übergeordnete UpdatePanel-Veröffentlichung ein großer Leistungserfolg, da alle UserControls statt einer eins gebucht werden. Wie mache ich nur ein UserControl Postback? Außerdem würde ich gerne wissen, wie man das Problem des Verschwindens von Steuerelementen loswird, wenn es dynamisch hinzugefügt wird?