为什么绑定 DropDownList 的功能不同于手动添加 ListItems?
Why does binding a DropDownList function differently than manually adding ListItems?
片段一
我一次向下拉列表添加一个列表项。
var ddlHour = new DropDownList {ID = "ddlHour" + i};
ddlHour.Items.Add(new ListItem("12 AM", "0:00"));
ddlHour.Items.Add(new ListItem("1 AM", "1:00"));
ddlHour.Items.Add(new ListItem("2 AM", "2:00"));
Console.WriteLine(ddlHour.Items[0].Value);
// Prints 0:00
片段二
我将下拉列表绑定到列表项数组。
var hourItems = new[]
{
new ListItem("12 AM", "0:00"), // "Text", "Value"
new ListItem("1 AM", "1:00"),
new ListItem("2 AM", "2:00")
};
var ddlHour = new DropDownList {ID = "ddlHour" + i, DataSource = hourItems};
ddlHour.DataBind();
Console.WriteLine(ddlHour.Items[0].Value);
// Prints 12 AM
第一个代码段执行后,我检查了每个项目的值并找到 "0:00"
、"1:00"
和 "2:00"
。正是我所期望的。
第二个代码段执行后,我检查了每个项目的值并找到 "12 AM"
、"1 AM"
和 "2 AM"
。不是我所期望的。我的价值观发生了什么变化?
他们是一样的。唯一不同的是,如果使用DataSource,则需要指定DataTextField and DataValueField.
...
ddlHour.DataBind();
ddlHour.DataTextField = "Text";
ddlHour.DataValueField = "Value";
Console.WriteLine(ddlHour.Items[0].Value);
片段一
我一次向下拉列表添加一个列表项。
var ddlHour = new DropDownList {ID = "ddlHour" + i};
ddlHour.Items.Add(new ListItem("12 AM", "0:00"));
ddlHour.Items.Add(new ListItem("1 AM", "1:00"));
ddlHour.Items.Add(new ListItem("2 AM", "2:00"));
Console.WriteLine(ddlHour.Items[0].Value);
// Prints 0:00
片段二
我将下拉列表绑定到列表项数组。
var hourItems = new[]
{
new ListItem("12 AM", "0:00"), // "Text", "Value"
new ListItem("1 AM", "1:00"),
new ListItem("2 AM", "2:00")
};
var ddlHour = new DropDownList {ID = "ddlHour" + i, DataSource = hourItems};
ddlHour.DataBind();
Console.WriteLine(ddlHour.Items[0].Value);
// Prints 12 AM
第一个代码段执行后,我检查了每个项目的值并找到 "0:00"
、"1:00"
和 "2:00"
。正是我所期望的。
第二个代码段执行后,我检查了每个项目的值并找到 "12 AM"
、"1 AM"
和 "2 AM"
。不是我所期望的。我的价值观发生了什么变化?
他们是一样的。唯一不同的是,如果使用DataSource,则需要指定DataTextField and DataValueField.
...
ddlHour.DataBind();
ddlHour.DataTextField = "Text";
ddlHour.DataValueField = "Value";
Console.WriteLine(ddlHour.Items[0].Value);