我正在尝试使用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"));
- }
- PositionDropDown.DataSource = GetPositionOptions();
- PositionDropDown.DataTextField = "Text";
- PositionDropDown.DataValueField = "Value";
- PositionDropDown.DataBind();
但这没有任何意义,你不应该绑定ListItems.