gpt4 book ai didi

asp.net - SelectedValue 属性和动态创建的 DropDownList。 ASP.NET

转载 作者:行者123 更新时间:2023-12-04 05:22:40 25 4
gpt4 key购买 nike

.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 中选择多个项目”。为什么?

谢谢。

最佳答案

我找到了答案。这里重要的是要记住 ddlDynamic.Items.Add(ddl.Items[i]);行,通过引用从“ddl”下拉列表中添加项目,并且不会将 ListItem 复制到使用“for”循环动态创建的每个 DropDownList 中。动态创建的所有下拉列表都使用之前初始化并添加到“ddl”的相同列表项。重要的是要知道:

ddlDynamic.DataSource = ddl.Items;
ddlDynamic.DataBind();

将做同样的事情:将通过来自“ddl”的引用使用 ListItems。所以我找到的解决方案是为每个动态创建的 DropDownList 创建 ListItems,并从源填充它们,在这种情况下它将是一个 DataTable:
protected void Page_Load(object sender, EventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("text", typeof(string));
table.Columns.Add("value", typeof(string));

table.Rows.Add("One", "1");
table.Rows.Add("Two", "2");
table.Rows.Add("Three", "3");
table.Rows.Add("Four", "4");
table.Rows.Add("Five", "5");
table.Rows.Add("Six", "6");
table.Rows.Add("Seven", "7");

int j = 1;
for (int h = 0; h < 3; h++)
{
DropDownList ddlDynamic = new DropDownList();
foreach (DataRow rw in table.Rows)
{
ddlDynamic.Items.Add(new ListItem((string)rw["text"], (string)rw["value"]));
}

ddlDynamic.SelectedValue = j.ToString();
ddlDynamic.ID = h.ToString();
Panel1.Controls.Add(ddlDynamic);
Panel1.Controls.Add(new LiteralControl("<br />"));
j++;
}
}

如果有人有更好的主意,请告诉我。

关于asp.net - SelectedValue 属性和动态创建的 DropDownList。 ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13545497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com