在我的Windows应用程序中,我在数据库中有价格列,用于存储产品的价值。
在我的winform中,我有一个组合框和列表框。组合框显示数据库中的所有项目。当用户从组合框中选择产品并单击“添加”时,这些产品将添加到列表框中。
在用户点击添加项目的同时,我检索项目的价格并将其传递给添加此值的方法。
但是如何添加多个值,例如我将产品1,产品2从组合框添加到列表框,我想将这些项的值添加为550 + 200 = 750并将其显示在文本框中。
目前我正在这样做。
要检索价格:
public DataSet searchforPrice(string price)
{
DataSet dataSet = new DataSet();
// Create connection object
OleDbConnection oleConn = new OleDbConnection(connString);
try
{
oleConn.Open();
string sql = "SELECT [Price] FROM [Product] WHERE [Product Name] ='" + price + "'";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
dataAdapter.Fill(dataSet, "Product");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
oleConn.Close();
}
return dataSet;
}
将项目添加到列表框并显示总价格:
private void button2_Click(object sender, EventArgs e)
{
listBox1.Items.Add(comboBox2.Text);
maskedTextBox10.Text = addPrice().ToString();
}
添加在组合框中选择的产品价格
public int addPrice()
{
DataSet ds = searchforPrice(comboBox2.Text);
int price = Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
return price;
}
答案 0 :(得分:0)
searchforPrice
方法的论据应该称为product
,而不是price
。
现在,你addPrice
方法是错误的,因为它不会增加任何价格。它只返回组合中当前所选项目的价格。它应该看起来像这样:
public int addPrice()
{
DataSet ds = searchforPrice(comboBox2.Text);
int sum = Convert.ToInt32(maskedTextBox10.Text);
int price = Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
return sum + price;
}
当然,如果你删除项目,你应该做类似的事情。
IMO,您应该将每个项目的价格存储在列表中,而不是应用此逻辑,并在文本框中显示这些价格的总和。如果删除项目,则重新计算总和会更容易(也更正确)。