在C#中从数据库中显示列表框中的项目

时间:2015-09-02 07:44:30

标签: c# database listbox

我有一个包含两个表CountriesWebsites的数据库。我使用以下语句在listbox1中显示所有国家/地区名称:

try
{

    connection.Open();
    using (OleDbCommand command = new OleDbCommand())
    {
        command.Connection = connection;
        command.CommandText = "SELECT CountryName FROM Countries ";
        //whenever you want to get some data from the database
        using (OleDbDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                listBox1.Items.Add(reader["CountryName"].ToString());
            }
        }
    }
}
catch (Exception l)
{
    MessageBox.Show("Error:" + l);
}
finally
{
    connection.Close();
}

但是根据用户在listbox1中选择的项目知道我希望列表框2显示链接到数据库中的国家/地区的相关网站。网站表中的外键是CountryIDFK,我想显示第二个表的字段WebsiteName

我不知道怎么不知道如何在listbox2中显示这些项目。我不想在第二个列表框中添加它们,而只是根据用户选择的国家/地区进行显示。有人可以协助吗?

2 个答案:

答案 0 :(得分:1)

首先,您可以绑定数据源。这意味着您可以将DataTable或对象列表绑定到列表框。示例在此处可用:https://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.datasource%28v=vs.110%29.aspx 这样,您就可以将您的ID和国家/地区名称存储在列表框项目列表中。

之后您可以使用SelectedValueChanged事件处理程序,这也在上面的示例中进行了演示。在处理程序方法中,您只需填充第二个列表框。

答案 1 :(得分:0)

考试:

tbl_tableFilds: ID,Title

在EF中:

var Result=tbl_Table.where().tolist();
ListBox1.Datasource=Result;
ListBox1.DisplyMemmber="Title";
ListBox1.ValueMember="ID";

另一种方法是:

在EF中:

var Result=tbl_Table.where().tolist();
foreach(var item in Result) {
  ListBox1.items.Add(item.Title);
  }