私は、ファーストフードチェーンのような販売店であるプロジェクトを作成しています。POSの小計を計算する
私のPOS上のボタンはデータベース内の値に応じて動的に作成され、各アイテムの数量を変更すると小計を計算するのに苦労しています。 DataGridを使用して、顧客が注文したすべての製品を一覧表示しました。
DataGridviewで選択された行の数量を設定できるadd
とminus
という2つのボタンを作成しましたが、私は正しいとは分かりませんが、選択した価格itemに数量を掛けたもの。
私の問題は、データグリッドにアイテムを追加するたびに、または、アイテムの数量を加算または減算するたびに、データ総額の計算と、データグリービュー内のアイテムの合計数を計算する方法です。小計は、アイテムを追加したり、アイテムを追加または削除したりする直前に反映されるべきです。
私のプロジェクトで何が起こりたいのかを理解するためのサンプル画像です。私はあなたのquantity_change方法で見ることができるどのような
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();
}
うわー!それは動作します。私はちょうど関数としてこのアイテムを追加したり削除したりしても呼び出せるように作成しました!ありがとう! :) – LazyPirate