【问题标题】:Show items in listbox from database in C#在 C# 中的数据库中显示列表框中的项目
【发布时间】:2015-09-02 07:44:29
【问题描述】:

我有一个包含两个表 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 中显示项目。我不想将它们添加到第二个列表框中,而只是根据用户选择的国家/地区显示。有人可以帮忙吗?

【问题讨论】:

  • 在列表框的 SelectedIndexChanged 事件中,使用选定的值并查询数据库并返回与选定项匹配的记录。

标签: c# database listbox


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    考试:

    tbl_tableFilds: ID,Title
    

    在英孚:

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

    另一种方法是:

    在英孚:

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

    【讨论】:

    • 嗨,欢迎来到 StackOverflow。请编辑您的答案以通过 {} 按钮突出显示代码,目前尚不清楚。谢谢。
    • 我自己尝试过格式化(编辑等待同行评审)。
    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多