0

在我的 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;

    }
4

1 回答 1

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,而不是应用此逻辑,您应该将每个项目的价格存储在列表中,并在文本框中显示这些价格的总和。如果您删除项目,重新计算总和会更容易(也更正确)。

于 2013-02-17T06:09:35.777 回答