Laden...

Interkation zwischen den UserControls auf dem PlaceHolder

Erstellt von f.ritz vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.209 Views
f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 17 Jahren
Interkation zwischen den UserControls auf dem PlaceHolder

Hallo!

Ich habe auf der Seite einen PlaceHolder. In diesen werden UserControls geladen. Ich möchte nun über einen geladenen UserControl einen neuen UserControl in den PlaceHolder laden und zwar mit den Parametern aus den ersten UserControl.
Kennt Ihr iregendwelche Mechanismen die man dazu nehmen könnte?

B
249 Beiträge seit 2005
vor 17 Jahren

Also wenn du vom UserControl irgendwie Zugriff (z.B. über eine MasterPage, Property im Control oder die ControlHierarchie) hast auf die Instanz des PlaceHolders sollte das kein Problem sein.

Du merkst dir dann die Eigenschaften des alten Controls die du brauchst. Entfernst es aus dem PlaceHolder und fügst dein neues hinzu (mit den Werten die du dir gemerkt hast).

Kommt das hin?

1.130 Beiträge seit 2005
vor 17 Jahren

Hallo f.ritz,

Du hasst immer Zugriff auf die nächst höhere Instanz und kannst somit auch auf den PlaceHolder bzw. das schon eingefügte UserControl zugreifen.

f.ritz Themenstarter:in
341 Beiträge seit 2004
vor 17 Jahren

Danke für die Hilfe!
Soweit funktioniert die Kommunikation zwischen den UserControls ganz gut!

Ich habe aber noch eine Frage:
Auf einem UserControl ist ein GridView positioniert. Ich möchte auf diesen GridView einen Datensatz auswählen. Duch die Auswahl eines Datensatzes soll sofort ein neuer UserControl geladen werden. Also, es soll sofort ein Event ausgelöst werden, wenn ein Datensatz im Gridview auf dem UserControl ausgewählt wird das sofort einen anderen UserControl in PlaceHolder lädt.

Die Vorgehensweise mit den Events auf dem UserControl, die auf der MasterPage registriert werden, funktioniert leider nicht:


protected void Page_Load(object sender, EventArgs e)
{
this.PlaceHolder1.Controls.Clear();
this.PlaceHolder1.Controls.Add(Page.LoadControl("WebUserControl1.ascx"));
if (!this.IsPostBack)
((ASP.webusercontrol1_ascx)this.PlaceHolder1.Controls[0]).MyEvent += new UserControl1EventHandler(h_Event); //Event registrieren
....
}

private void h_Event(object sender, UserControl1EventArgs e)
{
//Hier komm ich nicht an
}

Der Event wird leider nicht ausgelöst.

Wie kriegt man sowas hin?

Danke für eure Hilfe!