我正在使用C#.NET 4.0
我试图获取列表框中单个选定项目的值。
这就是我填充控件的方式:
this.files_lb.DataSource = DataTable object
在我的设计器中,我已将file_name指定为DisplayMember,将file_id指定为DisplayValue
在列表框中选择一个项目后,我尝试了以下内容来获取值:
this.files_lb.SelectedValue.ToString()
但它返回的只是"System.Data.DataRowView".
点击此链接:Getting value of selected item in list box as string
有人建议 -String SelectedItem = listBox1.SelectedItem.Value
然而,当我尝试这个时,“价值”不是一个选项。
如何从列表框中的单个选定项目中获取ValueMember值?
答案 0 :(得分:9)
var text = (listBox1.SelectedItem as DataRowView)["columnName"].ToString();
将columnName
替换为您要从中获取数据的列的名称,该列将与数据源中的列对应。
如果没有选定的项目,请注意空值。
答案 1 :(得分:5)
真的应该这么容易;我在按钮的点击事件中有以下内容,以确保我没有在我脑海中简化它:
private void button1_Click(object sender, EventArgs e)
{
string selected = listBox1.GetItemText(listBox1.SelectedValue);
MessageBox.Show(selected);
}
结果:
看起来你的问题可能是没有在控件上设置属性:
如果我取消选择该框,我会得到与您描述的完全相同的行为。
答案 2 :(得分:1)
var selectedValue = listBoxTopics.SelectedItem;
if (selectedValue != null)
{
MessageBox.Show(listBoxTopics.SelectedValue.ToString());
}
答案 3 :(得分:0)
您可能需要设置列表框的DataValueField。
NewEmployeesLB.DataSource = newEmployeesPersons.DataList.Select(np => new
ListItem() { Text = np.LastName + ", " + np.FirstName, Value = np.PersonID.ToString() }).ToList();
NewEmployeesLB.DataTextField = "Text";
NewEmployeesLB.DataValueField = "Value";
NewEmployeesLB.DataBind();