Laden...

[gelöst] Webcontrols über Klasse ansprechen

Erstellt von Hamsterfisch vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.188 Views
H
Hamsterfisch Themenstarter:in
8 Beiträge seit 2011
vor 11 Jahren
[gelöst] Webcontrols über Klasse ansprechen

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!

D
615 Beiträge seit 2009
vor 11 Jahren

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

H
Hamsterfisch Themenstarter:in
8 Beiträge seit 2011
vor 11 Jahren

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!

D
615 Beiträge seit 2009
vor 11 Jahren

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

H
Hamsterfisch Themenstarter:in
8 Beiträge seit 2011
vor 11 Jahren

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!

H
Hamsterfisch Themenstarter:in
8 Beiträge seit 2011
vor 11 Jahren

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!