[英]display item with multiple values from listbox into textbox using access database
我试图在列表框中选择一个项目时在其各自的文本框中显示项目值
这是我的设置方式:
这是将值显示在列表框中的方式
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()); }
这就是我试图使列表框中的值显示到文本框的方式
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();
是我试图在其中一个文本框中显示值。
现在,当我单击一个项目时,文本框中没有任何显示。 任何帮助表示赞赏
有更好的方法来完成您的工作,因此您可以利用DisplayMember
和ValueMember
优势,但是您遇到的问题是由于使用了向用户显示的整个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.