ASP.NET Web フォーム DropDownList でこの予期しない動作が発生しました。ListItems をドロップダウン リストに追加していますが、すべて問題なく表示されます。ddl の値 (私の場合は Id) が設定されないことを除いて、ListItem のテキストに置き換えられます。
<asp:DropDownList ID="ddl1" runat="server">
</asp:DropDownList>
private void Populate()
{
List<ListItem> list = new List<ListItem>();
foreach (var item in GetItems())
{
list.Add(new ListItem(item.name, item.id.ToString()));
//in the drop down list the ListItem.Value is being replaced
//by ListItem.Text when it is added to the ddl
}
ddl1.DataSource = list;
ddl1.DataBind();
ddl1.Items.Add(new ListItem("Make a selection"));
}
private List<Stuff> GetItems()
{
List<Stuff> list = new List<Stuff>();
list.Add(new Stuff{ name = "bill", id = 1});
list.Add(new Stuff{ name = "james", id = 2});
return list;
}
private struct Stuff
{
public string name;
public int id;
}
これが起こることを意図している場合、何かアイデアはありますか? そして、名前とIDの両方をddlに保存するにはどうすればよいですか?