2015-12-17 15 views
7

Próbuję uzyskać wszystkie listy rozwijane na mojej stronie, a w każdym z nich wybrany tekst/wartość wybranego elementu. Ale wydaje mi się, że czegoś brakuje.Pobierz wybraną opcję dla wszystkich list DropDown

foreach (DropDownList dr in this.Page.Form.Controls.OfType<DropDownList>()) { 
    foreach (ListItem li in dr.Items) { 
      if (li.Selected) { 
      //put the selected items value/text into something. 
     } 
    } 
} 

Jakiś pomysł na zrobienie tego?

Edytuj: Aby było bardziej jasne. Mam losową liczbę DropDownLists, gdzie mogę wybrać 1 opcję pr Dropdownlist. Kiedy wciskam przycisk, potrzebuję uzyskać informacje z tego, co wybrałem w każdym DropDownLists. (W DropDownLists nie ma identyfikatora, który ma losową liczbę).

+3

Na czym polega problem? Wszelkie wyjątki? – Irshad

+1

Nie jestem wybrany, nawet, że wybrałem listitem w moim menu rozwijanym. – user3314032

+1

@ user3314032 - Masz na myśli, że dynamicznie tworzysz te rozwijane listy? Jeśli nie, pokaż kod znaczników listy rozwijanej. –

Odpowiedz

0
protected void Button1_Click(object sender, EventArgs e) 
    { 
     List<DropDownList> lst = new List<DropDownList>(); 
     GetDropDownControls(GetListOfControlCollection(this.Form.Controls), ref lst); 

     foreach (DropDownList item in lst) 
     { 
      var selectedValue = item.SelectedValue; 
      //to do something with value 
     } 

    } 

     void GetDropDownControls(List<Control> controls, ref List<DropDownList> lst) 
    { 
     foreach (Control item in controls) 
     { 
      if (item.Controls.Count == 0 && item is DropDownList) 
       lst.Add((DropDownList)item); 
      else 
       if (item.Controls.Count > 0) 
        GetDropDownControls(GetListOfControlCollection(item.Controls), ref lst); 
     } 
    } 

    List<Control> GetListOfControlCollection(ControlCollection controls) 
    { 
     List<Control> result = new List<Control>(); 
     foreach (Control item in controls) 
     { 
      result.Add(item); 
     } 
     return result; 
    } 
+3

Chociaż jest to prawdopodobnie dobre rozwiązanie, spróbuj wyjaśnić, co robisz i dlaczego to * jest * właściwym rozwiązaniem dla tego, kto pyta. –

Powiązane problemy