当我在列表框中选择一个项目时,我试图在其各自的文本框中显示项目值
这是我的设置方式:
这是将值显示在列表框中的方式
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();
是我试图在其中一个文本框中显示值的方法。
现在,当我单击一个项目时,文本框中没有任何显示。任何帮助表示赞赏
答案 0 :(得分:1)
有更好的方法来完成您的工作,因此您可以利用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}'";
您可能还想检查参数化查询,但这是另一个问题...