2015-12-17 8 views
7

Sayfanın başındaki tüm açılır menüleri ve her birinde seçili öğe metnini/değerini almaya çalışıyorum. Ama bir şey eksik gibi görünüyorum.Tüm DropDown listeleri için seçili seçeneği al

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. 
     } 
    } 
} 

Bunu yapmak için bir fikrin var mı?

Düzenleme: Daha net hale getirmek için. Ben 1 seçenek pr Dropdownlistini seçebileceğim rastgele bir DropDownLists var. Bir düğmeye bastığımda, her DropDownLists uygulamasında seçmiş olduğum bilgileri almam gerekiyor. (DropDownLists'te hiç rastgele bir sayı yoktur).

+3

Karşılaştığınız sorun nedir? İstisnalar var mı? – Irshad

+1

Seçilmemiş alıyorum, hatta, benim açılanmda bir liste seçtim. – user3314032

+1

@ user3314032 - Yani bu açılır menüleri dinamik olarak mı oluşturuyorsunuz? Eğer açılır listenin işaretleme kodunu göstermezseniz. –

cevap

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

Bu muhtemelen iyi bir çözüm olsa da, lütfen ne yaptığınızı ve neden bu * sorusunu sorduğunuzu açıklamaya çalışın. –