2009-08-04 10 views

Antwort

1

Angenommen, diese Steuerelemente lauten runat="server", möchten Sie die Controls-Auflistung auf der Seite und rekursiv alle Containersteuerelemente (HasControls ist wahr für dieses Steuerelement) verwenden, die Sie auf der Seite finden. Fügen Sie zu Ihrer Liste ein gefundenes Steuerelement hinzu, das dem Typ entspricht, an dem Sie interessiert sind (DropDownList oder HtmlSelect). Wenn die Auswahlen nicht runat="server" sind, dann denke ich, dass du Pech hast, es sei denn ihre Benennung gibt sie weg. Sie können den Typ einer HTML-Eingabe nicht aus dem Inhalt der Formularsammlung ermitteln.

public List<Control> FindSelects(Control control, List<Control> controls) 
{ 
    if (control is DropDownList or control is HtmlSelect) 
    { 
      controls.Add(control); 
    } 
    else if (control.HasControls) 
    { 
      foreach (var subcontrol in control.Controls) 
      { 
       controls = FindSelects(subcontrol, controls); 
      } 
    } 
    return controls; 
} 
+0

Sieht gut aus. Beachten Sie, dass dies nicht die "SELECT" -Eingabe von Nicht-Server-Steuerelementen erhält. I.e. diese