none
ASP.NET 4.0 Static ControlID und FindControl RRS feed

  • 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

    Montag, 26. April 2010 08:00

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.

    Aber auch nur clientseitig.

    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.

    FindControl ist serverseitig, da bleibt alles beim alten. Clientseitig wird es jetzt leichter, siehe obiges Beispiel.

    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
    Montag, 26. April 2010 10:44
    Moderator

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.

    Aber auch nur clientseitig.

    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.

    FindControl ist serverseitig, da bleibt alles beim alten. Clientseitig wird es jetzt leichter, siehe obiges Beispiel.

    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
    Montag, 26. April 2010 10:44
    Moderator
  • Hallo,

    alles klar, vielen Dank für die Antwort.
    Dann ist der Nutzen nicht so viel größer für mich und ich bleibe für dieses Projekt erstmal bei 3.5.
    Es sei denn mir läuft noch ein anderes tolles Feature über den Weg ;)

    Viele Grüße
    Tamburin

    Montag, 26. April 2010 11:06