This question already has answers here:
How can I get the selected item of a dropdownlist, the first time my page loads?

(4个答案)


5年前关闭。




我正在尝试在页面上获取所有下拉列表,并在每个下拉列表中选择项目的文本/值。但是我似乎缺少了一些东西。
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 Dropdownlist。当我按下按钮时,我需要从每个DropDownLists中选择的内容中获取信息。 (在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;
    }

10-01 19:07