2017-05-21 58 views
-1

當我想刪除我的總額時,它刪除了總額,但不是稅(BTW)。如何移除總計和稅金?

private void btnVerkooplijnVerwijderen_Click(object sender, EventArgs e) 
    { 
     Int32 i; 


     // Rijnummer bepalen 
     i = dgvVerkooplijnen.CurrentRow.Index; 

     // Totaal aanpassen 
     dblHKTotaal -= 0; 
     dblVerzendkostenTotaal -= 0; 
     dblBTWTotaal -= 0; 
     dblTotaal -= Convert.ToDouble(dgvVerkooplijnen.Rows[i].Cells["Subtotaal"].Value); 
     lblBTWTotaal.Text = "€ " + dblBTWTotaal.ToString("N2"); 
     lblTotaal.Text = "€ " + dblTotaal.ToString("N2"); 

     // Rij verwijderen 
     dgvVerkooplijnen.Rows.RemoveAt(i); 
    } 

Application overview image

+0

我不明白,從你添加的圖像,一切似乎是正確的,你有1行,成本10€和2.1歐元(21%的比利時稅),所以,你的問題是什麼? – Icepickle

+0

另外請注意,你從總數中減去0,所以,你幾乎不能說這是一個變化;) – Icepickle

+0

當我刪除該行仍然顯示比利時稅收,然後總額是2.1歐元,需要爲0。 –

回答

0

不知道你是如何創建的數據表,我會給你如何計算線總和值和表中總數更直接的方式。例如創建一個完整的行項目,我可以建立一個數據表通過以下方式

var table = new DataTable(); 
table.Columns.Add("Id", typeof(Int32)); 
table.Columns.Add("Code", typeof(String)); 
table.Columns.Add("Description", typeof(string)); 
table.Columns.Add("Quantity", typeof(Int32)); 
table.Columns.Add("ItemPrice", typeof(decimal)); 
table.Columns.Add("SubTotal", typeof(decimal), "Quantity*ItemPrice"); 
table.Columns.Add("Taxes", typeof(decimal), "SubTotal*0.21"); 
table.Columns.Add("LineTotal", typeof(decimal), "SubTotal + Taxes"); 

在你在這裏看到的是,計算邏輯就成了我現在的數據表的功能。我不必分別計算所有項目,在添加行後,SubTotal,TaxesLineTotal會自動計算。這是通過使用完成DataColumn.Expression

那麼我可以添加項目,例如像:

table.Rows.Add(1, "DECA10", "Coffee decafinated", 1, 2.5); 
table.Rows.Add(2, "ESPR", "Espresso", 2, 2.5); 

,然後我可以用DataTable.Compute功能來計算我需要的總和,就像這樣:

decimal subTotal = (decimal)table.Compute("Sum(SubTotal)", ""); 
decimal total = (decimal)table.Compute("Sum(LineTotal)", ""); 
decimal taxTotal = (decimal)table.Compute("Sum(Taxes)", ""); 
Int64 quantityTotal = (Int64)table.Compute("Sum(Quantity)", ""); 

然後告訴他們(無論是在你的程序中,或在我的情況下,控制檯內),像這樣:

Console.WriteLine("Sub total = {0} €", subTotal); 
Console.WriteLine("Taxes  = {0} €", taxTotal); 
Console.WriteLine("Total  = {0} €", total); 
Console.WriteLine("Quantity = {0} pieces", quantityTotal); 

這個小的演示程序的例子,你可以找到一個dotnetfiddle here