如何以编程方式将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.

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。