为什么绑定DropDownList函数与手动添加ListItems不同?

时间:2015-02-19 21:12:54

标签: c# asp.net webforms

Snippet One

我一次向我的下拉列表添加列表项。

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

Snippet Two

我将下拉列表绑定到一系列列表项。

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"。不是我所期待的。我的价值观发生了什么变化?

1 个答案:

答案 0 :(得分:3)

他们是一样的。唯一不同的是,如果您使用 DataSource ,则需要指定 DataTextField DataValueField

...
ddlHour.DataBind();
ddlHour.DataTextField = "Text";
ddlHour.DataValueField = "Value";
Console.WriteLine(ddlHour.Items[0].Value);