Benutzer mit den meisten Antworten
ASP.NET 4.0 Static ControlID und FindControl

Frage
-
Hallo,
ich habe eine Frage:
Funktioniert in ASP.NET 4.0 mit Static ControlIDs noch die FindControl-Methode oder muss ich auch hier die IDs der ParentControls wissen?
Ich frage, weil ich ein großes Formular habe, mit Textfeldern, Radiobuttons und DropDownlists. Diese Formularelemente sind in verschiedenen Containern, Labels, CompositeControls etc. In 3.5 habe ich dadurch immer riesenlange name und id Attribute, wodurch das Ansteuern verdammt schwierig ist.
Um das zu verhindern würde ich gern diese Static ControlIDs nutzen, aber eben nur, wenn ich ein Element auch dann genauso z.B. über FindControl("myID") statt über myControl.FindControl("superparentID").FindControl("parentID").FindControl("myID") oder über diese ewig lange Kette mit Unterstrichen ansprechen kann.
Kann mir da vielleicht jemand eine Auskunft geben?
Viele Grüße
Tamburin
Antworten
-
Hallo Tam
burin,
Funktioniert in ASP.NET 4.0 mit Static ControlIDs noch die FindControl-Methode oder muss ich auch hier die IDs der ParentControls wissen?
Ja und Ja :) FindControl funktioniert natürlich, aber dennoch nur innerhalb eines Containers. Eine rekursive Suche wird auch hier AFAIK nicht unterstützt, dafür könntest Du das hier verwenden.
Wenn Du dann noch berücksichtigst, dass das, was Du da vergibst, die Client ID ist, wirst Du evtl. auch einsehen, dass das mit dem serverseitigen Code bzw. einem serverseitigen Aufruf von FindControl nicht viel zu tun hat.
Clientseitig per JavaScript kannst Du dann über document.getElementById( "<StatischeClientId>" ) auf das Element zugreifen.
Ich frage, weil ich ein großes Formular habe, mit Textfeldern, Radiobuttons und DropDownlists. Diese Formularelemente sind in verschiedenen Containern, Labels, CompositeControls etc. In 3.5 habe ich dadurch immer riesenlange name und id Attribute, wodurch das Ansteuern verdammt schwierig ist.
Um das zu verhindern würde ich gern diese Static ControlIDs nutzen, aber eben nur, wenn ich ein Element auch dann genauso z.B. über FindControl("myID") statt über myControl.FindControl("superparentID").FindControl("parentID").FindControl("myID") oder über diese ewig lange Kette mit Unterstrichen ansprechen kann.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Tamburin Montag, 26. April 2010 11:06
Alle Antworten
-
Hallo Tam
burin,
Funktioniert in ASP.NET 4.0 mit Static ControlIDs noch die FindControl-Methode oder muss ich auch hier die IDs der ParentControls wissen?
Ja und Ja :) FindControl funktioniert natürlich, aber dennoch nur innerhalb eines Containers. Eine rekursive Suche wird auch hier AFAIK nicht unterstützt, dafür könntest Du das hier verwenden.
Wenn Du dann noch berücksichtigst, dass das, was Du da vergibst, die Client ID ist, wirst Du evtl. auch einsehen, dass das mit dem serverseitigen Code bzw. einem serverseitigen Aufruf von FindControl nicht viel zu tun hat.
Clientseitig per JavaScript kannst Du dann über document.getElementById( "<StatischeClientId>" ) auf das Element zugreifen.
Ich frage, weil ich ein großes Formular habe, mit Textfeldern, Radiobuttons und DropDownlists. Diese Formularelemente sind in verschiedenen Containern, Labels, CompositeControls etc. In 3.5 habe ich dadurch immer riesenlange name und id Attribute, wodurch das Ansteuern verdammt schwierig ist.
Um das zu verhindern würde ich gern diese Static ControlIDs nutzen, aber eben nur, wenn ich ein Element auch dann genauso z.B. über FindControl("myID") statt über myControl.FindControl("superparentID").FindControl("parentID").FindControl("myID") oder über diese ewig lange Kette mit Unterstrichen ansprechen kann.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Tamburin Montag, 26. April 2010 11:06
-