获取所有下拉列表的选定选项
Get selected option for all DropDown-lists
我正在尝试获取我页面上的所有下拉列表,并且在每个下拉列表中都有 selected 项目 text/value。但是我好像漏掉了什么。
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,我可以在其中 select 1 个选项 pr Dropdownlist。当我按下一个按钮时,我需要从每个 DropDownLists 中 selected 中获取信息。 (DropDownLists上没有ID,那个是随机数)
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;
}
我正在尝试获取我页面上的所有下拉列表,并且在每个下拉列表中都有 selected 项目 text/value。但是我好像漏掉了什么。
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,我可以在其中 select 1 个选项 pr Dropdownlist。当我按下一个按钮时,我需要从每个 DropDownLists 中 selected 中获取信息。 (DropDownLists上没有ID,那个是随机数)
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;
}