【发布时间】:2012-11-24 20:54:47
【问题描述】:
.aspx 文件中包含常用的 html 代码和“Panel1”控件。 首先,我正在创建一个名为“ddl”的下拉列表,并向其中添加一些 ListItem,所有这些都来自后面的代码。接下来我想创建一定数量的其他 DropDownLists 并将我添加到“ddl”的所有 ListItems 复制到它们,之后我需要在页面运行时将它们添加到“Panel1”控件中。最重要的部分是我希望所有动态创建的下拉列表在运行页面时都有一个选定的值。可以看下面的代码:
protected void Page_Load(object sender, EventArgs e)
{
DropDownList ddl = new DropDownList();
ddl.Items.Add(new ListItem("One", "1"));
ddl.Items.Add(new ListItem("Two", "2"));
ddl.Items.Add(new ListItem("Three", "3"));
ddl.Items.Add(new ListItem("Four", "4"));
ddl.Items.Add(new ListItem("Five", "5"));
ddl.Items.Add(new ListItem("Six", "6"));
ddl.Items.Add(new ListItem("Seven", "7"));
int j = 2;
for (int h = 0; h < 3; h++)
{
DropDownList ddlDynamic = new DropDownList();
//Add the items from ddl to the new dropdownlsit
for (int i = 0; i < ddl.Items.Count; i++)
{
ddlDynamic.Items.Add(ddl.Items[i]);
}
//the selected item in the first dropdownlist
//must be "Two" but it will be "Four". WHY???
ddlDynamic.SelectedValue = j.ToString();
ddlDynamic.ID = h.ToString();
Panel1.Controls.Add(ddlDynamic);
Panel1.Controls.Add(new LiteralControl("<br />"));
j++;
}
}
这里的问题是所有三个下拉列表的选定值都是相同的,它将是“四”,而逻辑上第一个必须是“二”,第二个是“三”,第三个必须是“四”选定的值。第一个问题是:我做错了什么?
第二个问题。
当使用 ddlDynamic.Items.FindByValue(j.ToString()).Selected = true; 而不是 ddlDynamic.SelectedValue = j.ToString(); 时,我收到“不能在 DropDownList 中选择多个项目”。这是为什么呢?
谢谢。
【问题讨论】: