2016-05-21 6 views
0

私は、ファーストフードチェーンのような販売店であるプロジェクトを作成しています。POSの小計を計算する

私のPOS上のボタンはデータベース内の値に応じて動的に作成され、各アイテムの数量を変更すると小計を計算するのに苦労しています。 DataGridを使用して、顧客が注文したすべての製品を一覧表示しました。

DataGridviewで選択された行の数量を設定できるaddminusという2つのボタンを作成しましたが、私は正しいとは分かりませんが、選択した価格itemに数量を掛けたもの。

私の問題は、データグリッドにアイテムを追加するたびに、または、アイテムの数量を加算または減算するたびに、データ総額の計算と、データグリービュー内のアイテムの合計数を計算する方法です。小計は、アイテムを追加したり、アイテムを追加または削除したりする直前に反映されるべきです。

私のプロジェクトで何が起こりたいのかを理解するためのサンプル画像です。私はあなたのquantity_change方法で見ることができるどのような

LINK TO INTERFACE

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(); 
    } 

答えて

0

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(); 
+0

うわー!それは動作します。私はちょうど関数としてこのアイテムを追加したり削除したりしても呼び出せるように作成しました!ありがとう! :) – LazyPirate

関連する問題