2015-12-17 10 views
7

私は自分のページにすべてのドロップダウンリストを取得しようとしており、それぞれに選択したアイテムのテキスト/値を取得しようとしています。しかし、私は何かが欠けているようです。すべてのドロップダウンリストに対して選択されたオプションを取得

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

これを行うにはどうすればよいですか?

編集:もっと明確にする。私はDropDownListsのランダムな量を持っています。ここで私は1つのオプションprドロップダウンリストを選択できます。ボタンを押すと、各DropDownListsで選択した情報から情報を取得する必要があります。 (DropDownListsにはIDがありません。乱数があります)。

+3

あなたが直面している問題は何ですか?例外はありますか? – Irshad

+1

私は選択されなくなっています。でも、私はドロップダウンでリスト項目を選択しました。 – user3314032

+1

@ user3314032 - これらのドロップダウンを動的に作成していますか?表示されていない場合は、ドロップダウンのマークアップコードを表示します。 –

答えて

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

これはおそらく良い解決策ですが、あなたが何をしているのか、そしてなぜこれが質問している人にとって正しい解決策であるのかを説明してください。 –

関連する問題