2009-05-21 14 views
0

Ich möchte "komplexe" usercontrols mit mehr als einem Steuerelement innerhalb verwenden. Es ist das gleiche Steuerelement, das ich in der Liste wiederverwenden werde, und ich habe bereits ein PlaceHolder-Steuerelement dafür.Hinzufügen einer Liste von UserControls mit Schaltflächen zu einem PlaceHolder - kein Ereignis?

Ich kann das Steuerelement mit LoadControl (Pfad zu. ASCX) hinzufügen - kein Problem.

Ich kann durch meine benutzerdefinierten Eigenschaften bekommen/set Zugriff auf die eingebetteten Labels, auch, so dass ich jedes Steuerelement perfekt initialisieren kann.

Aber wenn LinkButtons hinzufügen, bekomme ich Probleme/Probleme.

Wenn ich auf die Schaltfläche klicke, bekomme ich eine "submit" der Seite, die die Steuerelemente rendert; aber das eigene Button-Ereignis des Controls scheint nicht zu feuern (oder zumindest scheint PageLoad auf der Elternseite zuerst zu feuern?) - Ich kann nicht herausfinden, wohin mein Event geht oder wo nach einem Namen/ID oder Parameter gesucht werden soll Taste.

Wie kommt oder was mache ich hier falsch?

Ich habe jetzt einen "Fake-Button" gemacht, indem ich ein Label mit einem "hardcoded A HREF" mit einer ID in der URL verwendet habe, aber ich möchte lernen, welches Event ich wo fangen muss und wie Init die Schaltfläche, weil ich "Standard-ASP.NET" -Steuerelemente für diese Benutzersteuerelemente verwenden möchten (hoffentlich ohne zu viel Patchwork-Codierung) ...

+0

Schreiben Sie bitte das Codebehind, das den LinkButton generiert und sein Ereignis bindet. – ichiban

+0

Vielen Dank für Ihre Zeit, ich habe versucht, das Problem in einer Beispielseite reproduzieren und jetzt funktioniert es wie erwartet? !! ??! Ich glaube, es hat etwas mit einer ziemlich komplexen AJAX-Funktionalität zu tun, die ich auf der gleichen Seite laufen. Denn ohne all das funktioniert der Code perfekt. Wie gehe ich vor? lösche ich diese Frage oder schließe ich sie oder was? – BerggreenDK

+0

Wenn das Problem weiterhin besteht, überschreiben Sie die Frage erneut und speichern Sie die Frage erneut. –

Antwort

1

Der einzige Grund, dass Ereignisse verloren gehen, ist, weil Ihre Steuerelemente werden nicht so neu erstellt, dass ASP.Net das Ereignis nach dem Postback dem Steuerelement zuordnen kann. Dies geschieht durch die Verwendung der ID-Eigenschaft.

Mit anderen Worten, Sie sind einer von drei Dinge zu tun, falsch:

1) Sie sind die IDs Ihrer Linkbuttons anders während der Erstellung Phase in Init nach dem Postbacks zuweisen

2) Sie Erstellen Sie Ihre Linkbuttons dynamisch mit Code, aber Sie tun dies nach der Init-Phase des Seitenlebenszyklus, sodass Ihre Steuerelemente nicht an ViewState teilnehmen.

3) Sie binden die Datenquelle des übergeordneten Steuerelements neu, das die Linkbuttons für jedes Postback enthält. Verwenden Sie if (!IsPostBack), um ein erneutes Binden zu verhindern.

Ohne Ihren Code zu sehen, kann ich leider nichts Genaueres dazu sagen.

+0

Die Steuerelemente werden zum ersten Mal perfekt (visuell) auf PageLoad erstellt. Welches ist es, wonach ich bin? Aber der usercontrol hat Knöpfe und es sind diese Ereignisse, die ich ergreifen muss, wenn ich klicke. ... aber mein Kommentar oben sagt alles. Danke für deine Zeit und Entschuldigung. – BerggreenDK

+0

Sorry für die lange Verzögerung, aber das Projekt wurde abgebrochen. Ich habe es jedoch untersucht. Es scheint, dass es die AJAX.NET kombiniert mit Masterpages war, die den "Trick" gemacht haben. – BerggreenDK