[英]Problem in binding a listbox to data
我有一个包含以下字段的表: ID , Name
我已将列表框绑定到表。
我的问题是,当用户在列表框中选择一个项目时,我如何找出所选项目的ID?
注意:编号不等于项目列表中的选定索引或编号
测试一下
lst.SelectedItem.Value;
要么
lst.SelectedValue;
其中lst是ListBox Cotrol
例如
假设您有一个DataTable dt,其中包含ID和Name列。 然后在绑定时包括以下代码,
this.listbox.DataSource = dt;
this.listbox.DisplayMember = "Name";
this.listbox.ValueMember = "ID";
在读取列表框的选定值时,
this.listbox.SelectedItem
将给您选定的名称和
this.listbox.SelectedValue
将为您提供相应的ID
这是什么类型的应用程序? ASP.net,Windows窗体,WPF?
我觉得您正在使用Windows窗体,因为其他两个更加清晰...
这是Windows窗体应用程序的一些代码...基本上,您创建自己的类,并将其用于列表项。 列表框将显示ToString()方法的结果,因此将其覆盖以获取您想要显示的值。 当您访问ListBox.SelectedItem时,它将是您定义的类的实例,并且您可以访问所需的任何属性:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
MyListItem item1 = new MyListItem("Java", 1);
MyListItem item2 = new MyListItem("C#", 221);
MyListItem item3 = new MyListItem("C++", 13);
listBox1.Items.Add(item1);
listBox1.Items.Add(item2);
listBox1.Items.Add(item3);
}
private class MyListItem
{
public string ItemName { get; set; }
public int ItemId { get; set; }
public MyListItem(string name, int id)
{
this.ItemName = name;
this.ItemId = id;
}
public override string ToString()
{
return this.ItemName;
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MyListItem selectedItem = (MyListItem)listBox1.SelectedItem;
MessageBox.Show(string.Format("Name is: {0}, Id is: {1}", selectedItem.ItemName, selectedItem.ItemId));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.