2017-05-21 60 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