将列表框绑定到数据时出现问题

时间:2011-03-29 04:50:06

标签: c# data-binding

我有一张包含以下字段的表:ID , Name

我已将列表框绑定到表格中。

我的问题是,当用户在列表框中选择了一个项目时,我如何找出所选项目的ID是什么?

注意:id不等于项目列表中项目的selectedindex或id

3 个答案:

答案 0 :(得分:0)

测试它

lst.SelectedItem.Value;

OR

lst.SelectedValue;

其中lst是ListBox Cotrol

答案 1 :(得分:0)

e.g。

假设您有一个DataTable dt,其中包含列ID和名称。 然后绑定时包括以下代码,

this.listbox.DataSource = dt;
this.listbox.DisplayMember = "Name";
this.listbox.ValueMember = "ID";

在读取列表框的选定值时,

this.listbox.SelectedItem会为您提供所选名称和

this.listbox.SelectedValue会给你相应的ID

答案 2 :(得分:0)

这是什么类型的应用程序? ASP.net,Windows Forms,WPF?

我觉得你正在使用Windows Forms,因为其他两个更清晰......

以下是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));
    }
}