I’m trying to add items to a dropdown list using a List of ListItems, but it’s not picking up the value (only the text).
The code is below (simplified from the code I’m actually using):
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;
}
However the rendered HTML is missing the values specified in the 2nd parameter of the ListItem constructor:
<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>
Why is it not using the specified “value” and instead just repeating the “name” when rendering the HTML? What am I doing wrong?
Try with this code. You’re mixing manually item addition with data binding.
I’d say that if you want to keep your code as it is you should add this 2 lines
But it make no sense, you’re not supposed to bind ListItems.