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

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

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

  1. PositionDropDown.DataSource = GetPositionOptions();
  2. PositionDropDown.DataBind();
  3.  
  4.  
  5. private List<ListItem> GetPositionOptions()
  6. {
  7. List<ListItem> items = new List<ListItem>();
  8. items.Add(new ListItem("",""));
  9. items.Add(new ListItem("Top (main)","TOP"));
  10. items.Add(new ListItem("Bottom (full width)","BTM"));
  11. items.Add(new ListItem("Bottom Left","MIL"));
  12. items.Add(new ListItem("Bottom Middle","MID"));
  13. return items;
  14. }

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

  1. <option value=""></option>
  2. <option value="Top (main)">Top (main)</option>
  3. <option value="Bottom (full width)">Bottom (full width)</option>
  4. <option value="Bottom Left">Bottom Left</option>
  5. <option value="Bottom Middle">Bottom Middle</option>

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

解决方法

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

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

  1. PositionDropDown.DataSource = GetPositionOptions();
  2. PositionDropDown.DataTextField = "Text";
  3. PositionDropDown.DataValueField = "Value";
  4. PositionDropDown.DataBind();

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

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