繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM