在Windows Forms 4.5中,我使用一个简单的ListBox,并在代码隐藏中动态添加项目,如下所示:
for (int i = 0; i < rawshows.Count; i++)
{
var item = rawshows[i];
if (/* some comparisons I will not bore you with */)
{
ListItem li = new ListItem(item.ShowName, i.ToString());
shows.Add(li);
}
}
lbShows.DataSource = shows;
lbShows.DataBind();
如您所见,元素的文本设置为item.ShowName
(这是一个字符串),值设置为i
计数器的值。
一切似乎都很好,列表正确填充。问题是当我从列表中检索所选项目时。这样:
lbShows.SelectedItem.Value
评估与
相同的值lbShows.SelectedItem.Text
(其中lbShows
是listBox)。基本上他们都会评估节目名称,而不是填写列表时我设置的数字。
关于我做错的任何线索?
答案 0 :(得分:1)
在调用.DataBind()
之前指定DataTextField和DataValueField
lbShows.DataTextField = "TextColumnName";
lbShows.DataValueField = "ValueColumnName";