c#和SQL如何在文本框中显示所选项目的价格



输入图片描述

我需要的是当我选择的项目在组合框中显示在列表框和他的价格在成本文本框和总价如果我选择其他项目

这是我的代码Public void fill_listbox(){SqlDataAdapter da = new SqlDataAdapter("select TestCost,TestName from TestTbl", con);DataSet dt = new DataSet();哒。填充(dt,"TestName";TestidCb。DataSource = dt.Tables["TestName"];TestidCb。DisplayMember = "TestName";TestidCb。ValueMember = "TestCost";TestidCb。Text = "Select NorTest";

}



string TR = "";
int GrdCost = 0;
private void OkBtn_Click(object sender, EventArgs e)
{
if (LabidCb.SelectedIndex == -1 )
{
MessageBox.Show("select the Test And Lab");
}
else
{
TR = TR + "|" + TestidCb.Text;
TestTb.Text = TR;
GrdCost = GrdCost +Cost;
CostTb.Text = "" + GrdCost;
//TestidCb.SelectedIndex = -1;
//LabidCb.SelectedIndex = -1;
//StNameTb.Text = "";
Reset1();
}


}

这将让您开始。ExecuteNonQuery已被删除,因为它没有任何用途。

我添加了"TestPrice"到SELECT语句

我将DataTable绑定到组合框,而不是在循环中添加项。

我设置了DisplayMember和ValueMember。用户将只看到TestName,但商品的价值是价格。

public void fill_list()
{
try
{
con.Open();
using(SqlCommand cmd = con.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "select TestName, TestPrice from TestTbl";

DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);

TestidCb.DataSource = dt;
TestidCb.DisplayMember = "TestName";
TestidCb.ValueMember = "TestPrice";
}           
}
finally
{
con.Close();
}
}

现在,在选定的更改事件为例,你可以得到TextName和价格,并做任何你需要的:

private void TestidCb_SelectedIndexChanged(object sender, EventArgs e)
{
string name = ((ComboBox)sender).Text;
string price = ((ComboBox)sender).SelectedValue.ToString();
MessageBox.Show($"Name: {name}, Price: {price}");
}

创建一个类myProductListItem,它有两个属性,name和price

获取查询中的名称和价格(select testname, price from TestTbl)

将它们放入myProductListItem实例中并将其放入您的combobox.items

public class myListItem
{
public string Name { get; set; }
public decimal Price { get; set; }
public override string ToString()
{
return Name;
}
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.Items.Add(new myListItem(){Name = "myname",Price = 10});
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var selected = comboBox1.SelectedItem as myListItem;
if (selected != null)
{
textBox1.Text = selected.Price.ToString();
}
}

最新更新