所以我正在创建一个项目,它是一个销售点,就像那些在快餐连锁店里的一样。
POS上的按钮是动态创建的,取决于数据库中的值,现在当我更改每个项目的数量时,我很难计算小计。我用DataGrid列出了客户订购的所有产品。
我创建了两个按钮,即add和minus,它们可以在datagridview中设置选定行的数量,我不确定是否正确,但下面还提供了计算所选项目的价格乘以数量的代码。
我的问题是,每当我在数据集中添加项目时,如何计算小计价格和数据视图中的项目总数,或者在项目数量上加或减。?小计应立即反映每次我添加一个项目,或增加或减去一个项目。
提供了一个示例图像,以更好地理解我希望在我的项目中发生的事情。

public void quantity_change(object sender, EventArgs e)
{
var row = dataGridView1.CurrentRow;
if (row == null || row.Index < 0)
return;
var unit = (sender == add) ? 1 : -1;
var quantity = Convert.ToInt32(row.Cells["Quantity"].Value) + unit;
row.Cells["Quantity"].Value = quantity;
var rate = Convert.ToDouble(row.Cells["SellingPrice"].Value);
row.Cells["TotalPrice"].Value = quantity * rate;
}private void frmPOS_Load(object sender, EventArgs e)
{
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
add.Click += quantity_change;
minus.Click += quantity_change;
cmd = new MySqlCommand("SELECT * FROM tblmenu", dbConn);
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Button btn = new Button();
btn.Text = rdr["menuName"].ToString();
btn.Name = rdr["menuID"].ToString();
btn.Width = 126;
btn.Height = 80;
btn.Click += delegate
{
dataGridView1.ClearSelection();
MySqlConnection cnn2 = new MySqlConnection(sqlConn.connString);
cnn2.Open();
cmd = new MySqlCommand("SELECT menuName, menuPrice FROM tblmenu WHERE menuID = @id", cnn2);
cmd.Parameters.AddWithValue("@id", btn.Name);
MySqlDataReader rdr2 = cmd.ExecuteReader();
while (rdr2.Read())
{
//I added the item in my datagridview, with the button name, 1 = 1quantity, and Selling Price
dataGridView1.Rows.Add(rdr2.GetString("menuName").ToUpper(), 1, rdr2.GetDouble("menuPrice"));
}
//I copied the value of Selling Price Column to the Total Price Column in this part
foreach (DataGridViewRow row in dataGridView1.Rows)
{
value = row.Cells["SellingPrice"].Value.ToString();
row.Cells["TotalPrice"].Value = value;
}
};
if (rdr["menuAvailability"].ToString() == "yes")
{
if (rdr["menuCategory"].ToString() == "Sandwiches")
{
flpSandwiches.Controls.Add(btn);
}
else if (rdr["menuCategory"].ToString() == "Appetizers")
{
flpAppetizers.Controls.Add(btn);
}
}
}
rdr.Close();
}发布于 2016-05-21 08:29:47
我在您的quantity_change方法中看到了什么:
row.Cells["TotalPrice"].Value = quantity * rate;对我来说,这是给定产品的小计。
您不需要计算整个订单的总价(数据网格中的所有产品),您需要对所有产品的所有小计进行求和。
例如,在quantity_Change的末尾:
double Total=0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
Total+=row.Cells["TotalPrice"].Value;
}
// now you can set this value for example label under data grid
labelTotal.Text = Total.ToString();https://stackoverflow.com/questions/37360545
复制相似问题