【问题标题】:c# ListBox From SQLite Databasec# SQLite 数据库中的 ListBox
【发布时间】:2016-05-09 12:07:42
【问题描述】:

首先,我很不好意思问这个问题,因为它看起来很简单,但我一直在寻找论坛,只是不知道它是如何工作的。

我正在尝试从 SQLite 的表中填充我的列表框,但我需要将实际值作为数据库中的 id 而不是显示的值。现在我知道这里有很多已经回答的问题,但我读过的答案似乎都不适合我。

我是从 php 编程过来的,在那里做起来非常简单。

我使用的代码是

    private void fillTheColours(ListBox colourListBox)
    {
        colourListBox.Items.Clear();
        con.Open();
        SQLiteCommand command = new SQLiteCommand(con);
        command.CommandText = "SELECT colourId,suffix FROM colours ORDER BY suffix ASC";
        command.ExecuteNonQuery();

        SQLiteDataReader reader = command.ExecuteReader();

        while (reader.Read())
        {
            colourListBox.Items.Add(reader["suffix"]);
        }
        con.Close();
    }

这是我的功能,将可见值放入列表框中效果很好,但该值在应用程序的下一步中无用。

首先我将如何添加 id。 其次,我将如何访问该 id ?将其设置为变量?

众所周知,我在 Visual Studio 2015 的 Windows 窗体应用程序中使用 c#

提前干杯 瑞恩

【问题讨论】:

  • ListBox.DisplayMember = "MyKey"; // the display value ListBox.ValueMember = "MyValue"; // can be id.
  • 我以前看过这个答案。但是我需要一个完整的解释来说明如何使用它,我已经尝试了大约 2 天,但我无法理解它。

标签: c# sqlite listbox


【解决方案1】:
colourListBox.Items.add(new ListBoxItem("name", "value"));

如上更改代码以添加项目。

要获得选定的 ID,请使用以下代码:

string id = colourListBox.SelectedValue;

替代方法:

    private void fillTheColours(ListBox colourListBox)
     { 
    colourListBox.Items.Clear();
 SQLiteDataAdapter  da = new SQLiteDataAdapter("SELECT colourId,suffix FROM colours ORDER BY suffix ASC",con); 
    DataSet ds = new DataSet();
    da.Fill(ds);

    colourListBox.ValueMember= "colourId";
    colourListBox.DisplayMember="suffix";
    colourListBox.DataSource = ds;
     }

【讨论】:

  • 找不到类型或命名空间名称“ListBoxItem”。这就是我之前看到这个答案的地方,但它从来没有奏效。在我完成了关于这个主题的所有阅读之后,我需要一个完整的解释来理解它,我已经尝试了 2 天来让它工作,我很尴尬,因为它看起来很简单。
  • 使用 System.Windows.Controls 添加;编码。这将添加所需的命名空间。
  • 命名空间控件在命名空间 System.Windows 中不存在。这让我很头疼。我正在使用 .NET 框架 4.5.2,如果这有什么不同?
  • 可能存在引用的 DLL 版本与您的项目版本不匹配的情况。stackoverflow.com/questions/4764978/…
  • 我添加了对 System.Windows 的引用,但仍然没有控件,尽管在引用管理器中我可以访问 System.Windows.Controls.Ribbons,奇怪
【解决方案2】:

while (reader.Read()) {

         string id  =reader["colourId"].ToString();
         string suf =reader["suffix"].ToString();
         var newit  = new ListBoxItem(id, suf);
         colourListBox.Items.add(newit);


    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多