将ListItems从通用列表添加到DropDownList

Esp*_*spo 10 asp.net listitem drop-down-menu

我有一个这个aspx代码:(样本)

<asp:DropDownList runat="server" ID="ddList1"></asp:DropDownList>   
Run Code Online (Sandbox Code Playgroud)

有了这个代码隐藏:

List<System.Web.UI.WebControls.ListItem> colors = new List<System.Web.UI.WebControls.ListItem>();
colors.Add(new ListItem("Select Value", "0"));
colors.Add(new ListItem("Red", "1"));
colors.Add(new ListItem("Green", "2"));
colors.Add(new ListItem("Blue", "3"));
ddList1.DataSource = colors;
ddList1.DataBind();
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

<select name="ddList1" id="ddList1">
    <option value="Select Value">Select Value</option>
    <option value="Red">Red</option>
    <option value="Green">Green</option>
    <option value="Blue">Blue</option>
</select>   
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我的值(数字)消失了,文本用作值和文本?我知道如果我使用该ddList1.Items.Add(New ListItem("text", "value"))方法它是有效的,但出于其他原因我需要使用通用列表作为数据源.

Ser*_*gel 10

因为DataBind方法仅在设置了DataValueField属性时才绑定值.如果在调用DataBind之前将DataValueField属性设置为"Value",则您的值将显示在标记上.

更新:您还需要将DataTextField属性设置为"Text".这是因为数据绑定和手动添加项目不能以相同的方式工作.数据绑定不知道ListItem类型的存在,并通过评估数据源中的项来生成标记.