执行计算

时间:2015-11-04 14:33:31

标签: c# asp.net

这是在webform执行计算的最佳方式吗?它有效,但如果要将dropdownlists添加到webform,它似乎是非常强大的语法和最重要的。基本上我需要的是一种计算每个dropdownlist的项目总计的方法,即ItemPrice * Quantity然后为每个项目添加税。仅供进一步解释:

  

Item1 = $ 10.00
  第1项数量= 4
  Item1Tax = $ 2.80
  Item1total = $ 42.80

private double item1price;
private double item1total;
private double item1tax;
private double item2price;
private double item2total;
private double item2tax;
private double item3price;
private double item3total;
private double item3tax;
private double totalprice;
private double totaltax;
private double taxableamt = 0.07;

if (!String.IsNullOrEmpty(dropdownforitem1.Text)) 
{ 
    item1total = Convert.ToDouble(item1price)*Convert.ToDouble(quantityfor1.SelectedItem.Text);     
    item1tax = item1total*taxableamt;
    item1total = item1tax+item1total;
}
if (!String.IsNullOrEmpty(dropdownforitem2.Text)) 
{ 
    item2total = Convert.ToDouble(item2price)*Convert.ToDouble(quantityfor2.SelectedItem.Text);
    item2tax = item2total*taxableamt;
    item2total = item2tax+item2total;       
}
if (!String.IsNullOrEmpty(dropdownforitem3.Text)) 
{ 
    item3total = Convert.ToDouble(item3price)*Convert.ToDouble(quantityfor3.SelectedItem.Text);     
    item3tax = item3total*taxableamt;
    item3total = item3tax+item3total;
}
totalprice = item1total+item2total+item3total;
totaltax = item1tax+item2tax+item3tax;

3 个答案:

答案 0 :(得分:0)

如何创建这样的方法?

private void CalculateTotals(double unitPrice, string quantity)
{
    if (String.IsNullOrEmpty)
    {
        throw new ArgumentException("Quantity is not valid");
    }

    double itemQuantity = Convert.ToDouble(quantity);
    double subtotal = unitPrice * itemQuantity;
    double itemTax = taxableamt * subtotal;
    double price = subtotal + itemTax;
    totalprice += price;
    totaltax += itemtax;
}

然后让每个下拉列表调用此方法:

CalculateTotals(item1price, quantityfor1.SelectedItem.Text);

答案 1 :(得分:0)

制作一个下拉词典并循环处理它们,总结你的总价和总税。

示例:

var taxableamt = 0.07m;
var dropDowns = new Dictionary<Control,DropDownList>();
dropDowns.Add(dropdownforitem1,quantityfor1);
dropDowns.Add(dropdownforitem2,quantityfor2);
dropDowns.Add(dropdownforitem3,quantityfor3);
// keep going for all drop downs.
var subtotal = 0.0M, tax = 0.0M;
foreach(var item in dropDowns.Keys)
{
    var value = Convert.ToDecimal(item.Text);
    var qty = Convert.ToDecimal(dropDowns[item].SelectedItem.Text);
    var itemsubtotal = value * qty;
    var itemtax = itemsubtotal * taxableamt;
    subtotal+=itemsubtotal;
    tax+=itemtax;
}
var totalprice = subtotal + tax;

答案 2 :(得分:0)

我认为您要实现的是购物车样式。如果您使用ASP.NET webforms,则必须使用Repeater控件或GridView控件,转发器中的每个项目都是Dropdown(可用商品绑定。),数量的文本框和Delete按钮。提供添加按钮以向网格添加新行。

单击“添加新按钮”时,需要动态地将行添加到网格中。必须使用ViewState或隐藏字段来跟踪要添加的行。

在最后的计算按钮上单击,需要遍历转发器项目并对从每个项目获得的值执行上述计算。

对下拉数量进行硬编码并不是一个好习惯。