繁体   English   中英

使用Access数据库从列表框到文本框显示具有多个值的项目

[英]display item with multiple values from listbox into textbox using access database

我试图在列表框中选择一个项目时在其各自的文本框中显示项目值

这是我的设置方式:

  1. 这是将值显示在列表框中的方式

      command.CommandText = "select * from ItemsList"; OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { EditItemBrowserBox.Items.Add(reader["ID"].ToString() + " " + reader["ItemBrand"].ToString() + " " + reader["ItemName"].ToString() + " " + reader["ItemType"].ToString() + " " + reader["ItemPrice"].ToString()); } 
  2. 这就是我试图使列表框中的值显示到文本框的方式

      command.CommandText = "select * from ItemsList where ItemName='" + EditItemBrowserBox.Text + "' "; OleDbDataReader reader = command.ExecuteReader(); while (reader.Read()) { EditIDTB.Text = reader["ID"].ToString(); ItemNameAddTB.Text = reader["ItemName"].ToString(); ItemTypeAddTB.Text = reader["ItemType"].ToString(); ItemBrandAddTB.Text = reader["ItemBrand"].ToString(); ItemPriceAddTB.Text = reader["ItemPrice"].ToString(); } 

EditItemBrowserBox是列表框, EditIDTB.Text = reader["ID"].ToString(); 是我试图在其中一个文本框中显示值。

现在,当我单击一个项目时,文本框中没有任何显示。 任何帮助表示赞赏

有更好的方法来完成您的工作,因此您可以利用DisplayMemberValueMember优势,但是您遇到的问题是由于使用了向用户显示的整个Text字段。

如果他们的选择如下所示:

001     Acme  Anvil  Weapon  10.00

然后您的查询最终是:

select * from ItemsList where ItemName='001     Acme  Anvil  Weapon  10.00'

只需将您感兴趣的部分分开即可:

var itemName =
    EditItemBrowserBox.Text.Split(new[]{' '}, StringSplitOptions.RemoveEmptyEntries)[2];

command.CommandText = $"select * from ItemsList where ItemName='{itemName}'";

要解决具有多个空格的项目名称的问题,您可能需要根据ID进行选择:

var id = EditItemBrowserBox.Text.Split(' ')[0];

command.CommandText = $"select * from ItemsList where ID='{id}'";

您可能还想检查参数化查询,但这是一个不同的问题...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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