【问题标题】:How do you programmatically add ListItems to DropDownList in ASP.NET?如何以编程方式将 ListItems 添加到 ASP.NET 中的 DropDownList?
【发布时间】:2012-04-06 03:00:50
【问题描述】:

我正在尝试使用 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 构造函数的第二个参数中指定的值:

<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 时不使用指定的“值”而只是重复“名称”?我做错了什么?

【问题讨论】:

  • 啊哈,该死的......现在看到了,但你自己也看到了:-)

标签: asp.net drop-down-menu generic-list


【解决方案1】:

试试这个代码。您正在将手动添加项目与数据绑定混合。

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。

【讨论】:

  • 谢谢,但答案更简单——我忘了​​指定 DataTextField 和 DataValueField
  • “你不应该绑定 ListItems”是什么意思?你可以绑定到我认为的任何东西。
  • 你可以做到,但是使用我描述的第一种方法是很自然的方法,因为 Items 集合是 ListItem 的集合。
  • 公平点 - 我已经更改了代码 :) 我想我只是太习惯于数据绑定了。不过,这两种方法可能没有真正的优势/劣势。
  • 重要的一点是不能直接将项目添加到 DropDownList 中。你必须使用数据源。
猜你喜欢
  • 1970-01-01
  • 2011-02-12
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 2011-08-22
  • 2013-12-30
  • 1970-01-01
相关资源
最近更新 更多