动态填充的DropDownList设置SelectedIndex更改DropDownList

时间:2014-07-21 15:50:17

标签: c# asp.net webforms

我正在尝试设置从数组中填充的两个DropDownList的选定索引或值。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ListItem[] jobs;
            List<ListItem> data = new List<ListItem> {
                new ListItem("Hello", "World"),
                new ListItem("new", "item"),
                new ListItem("next", "item2"),
                new ListItem("four", "four")
            };
            jobs = (from x in data
                    select new ListItem(x.Text, x.Value)).ToArray();
            // jobs is any array of list items where
            // text = value or text != value, but value is unique.
            DropDownList1.Items.AddRange(jobs);
            DropDownList2.Items.AddRange(jobs);
            DropDownList1.SelectedIndex = 1;
            DropDownList2.SelectedValue = jobs[3].Value;
        }
    }

在实际页面上,DropDownList都选择了“4”。如何设置不同的值?
注意:我知道这里不需要使用linq,但在项目代码中 data 来自SQL DB。

2 个答案:

答案 0 :(得分:1)

创建另一个ListItem jobsClone

ListItem[] jobsClone = new ListItem[jobs.Length];
for (int i = 0; i < jobs.Length; i++)
{
    jobsClone[i] = new ListItem(jobs[i].Value);
}

然后您可以设置您的SelectedIndex

DropDownList1.Items.AddRange(jobs);
DropDownList2.Items.AddRange(jobsClone);
DropDownList1.SelectedIndex = 1;
DropDownList2.SelectedIndex = 3;

答案 1 :(得分:0)

Items.AddRange(array)执行数组的浅表副本。 执行深层复制更改

DropDownList1.Items.AddRange(jobs); 

DropDownList1.DataSource = jobs;     

DropdownList1.DataBind(); 

重复其他列表。