如何以编程方式将ListItems添加到ASP.NET中的DropDownList?

前端之家收集整理的这篇文章主要介绍了如何以编程方式将ListItems添加到ASP.NET中的DropDownList?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用ListItems列表将项目添加到下拉列表,但它没有获取值(仅文本).

代码如下(从我实际使用的代码中简化):

PositionDropDown.DataSource = GetPositionOptions();
    PositionDropDown.DataBind();


    private List<ListItem> GetPositionOptions() 
    {
        List<ListItem> items = new List<ListItem>();
        items.Add(new ListItem("",""));
        items.Add(new ListItem("Top (main)","TOP"));
        items.Add(new ListItem("Bottom (full width)","BTM"));
        items.Add(new ListItem("Bottom Left","MIL"));
        items.Add(new ListItem("Bottom Middle","MID"));
        return items;
    }

但是,呈现的HTML缺少ListItem构造函数的第2个参数中指定的值:

<option value=""></option>
<option value="Top (main)">Top (main)</option>
<option value="Bottom (full width)">Bottom (full width)</option>
<option value="Bottom Left">Bottom Left</option>
<option value="Bottom Middle">Bottom Middle</option>

为什么它不使用指定的“值”而只是在呈现HTML时重复“名称”?我究竟做错了什么?

解决方法

尝试使用此代码.您手动将项目添加与数据绑定混合.
private void SetPositionOptions() 
{
    PositionDropDown.Items.Add(new ListItem("",""));
    PositionDropDown.Items.Add(new ListItem("Top (main)","TOP"));
    PositionDropDown.Items.Add(new ListItem("Bottom (full width)","BTM"));
    PositionDropDown.Items.Add(new ListItem("Bottom Left","MIL"));
    PositionDropDown.Items.Add(new ListItem("Bottom Middle","MID"));
}

我会说,如果你想保持你的代码,你应该添加这2行

PositionDropDown.DataSource = GetPositionOptions();
PositionDropDown.DataTextField = "Text";
PositionDropDown.DataValueField = "Value";
PositionDropDown.DataBind();

但这没有任何意义,你不应该绑定ListItems.

猜你在找的asp.Net相关文章