Hallo,
ich habe eine aspx Seite, auf der ein Modalpopup ist.
Ich müsste dieses Popup über den Code in einer Klasse öffnen.
Wie funktioniert das? Wenn ich versuhe das Control mit this.FindControl zu finden bekomme ich eine null-exception...
Vielleicht weiß es ja zufällig jemand, ich verzweifele grad etwas 😃
Gruss und schönes Wochenende!
Hallo Hamsterfisch
this.FindControl gibt Dir das Object zurück. Du solltest aber beachten, dass diese Funktion nicht rekursiv ist. Wenn du also ein Control finden willst, das in einem andern Control ist, geht das nicht so einfach.
Die reskursive Methode könnte etwa so aussehen (gleich als Extension Method z.B):
public static Control FindControlRecursive(this Control parentControl, string controlId)
{
foreach (Control control in parentControl.Controls)
{
if (controlId == control.ID)
{
return control;
}
if (control.Controls.Count > 0)
{
var foundControl = control.FindControlRecursive(controlId);
if (foundControl != null) return foundControl;
}
}
return null;
}
Um nun auf deine Frage einzugehen :
Webcontrols über Klasse ansprechen
((MyControl)Page.FindControlRecursive("MeinControl")).MeineSpezifischeEigenschaft ="Hallo";
Beste Grüsse
Diräkt
Hallo und danke erstmal für die Antwort!
Die Funktion funktioniert allerdings nur, wenn man sie vom Code Behind der ASPX Seite aufruft. Von einer anderen Klasse aus geht das nicht. Man bekommt immernoch eine null-exception.
Ich schätze das liegt am Protection level der Controls...
noch eine Idee?
Gruss!
Hallo Hamsterfisch
Die Funktion funktioniert allerdings nur, wenn man sie vom Code Behind der ASPX Seite aufruft. Von einer anderen Klasse aus geht das nicht. Man bekommt immernoch eine null-exception.
Das versteh ich nicht.
Klingt nicht nach Trennung zwischen GUI und Logik 😉
Beste Grüsse
Diräkt
Hallo,
in einer Klasse erzeuge ich dynamisch eine Tabelle. In der Tabelle sind auch Controls (buttons, Click event über eventhandler zugewiesen) Beim Click auf diese Buttons soll halt das Popup (Befindet sich auf der apsx Seite, von der aus die Klasse instanziert wird) geöffnet werden (über den Code im Click eventhandler)...
Gruss!
ich habs...
Ich habe jetzt im Code Behind der aspx Seite, nachdem die Tabelle erzeugt wurde, eine Funktion aufgerufen, die den Eventhandler hinzufügt. Dann gehts
Danke für die Hilfe!
Gruss!