执行计算
本文关键字:计算 执行 | 更新日期: 2023-09-27 18:20:28
这是在webform
上执行计算的最佳方式吗?它是有效的,但如果要在webform
中添加额外的dropdownlists
,那么它的语法似乎非常健壮,而且头重脚轻。本质上,我需要的是一种计算每个dropdownlist
的项目总额的方法,即ItemPrice*Quantity,然后再加上每个项目的税。只是为了进一步解释:
项目1=10.00美元
项目1数量=4
项目1税=2.80美元
项目1总计=$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;
创建这样的方法怎么样?
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);
制作一个下拉列表字典,并在循环中处理它们,边走边求和总价和总税收。
示例:
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;
我认为您试图实现的是购物车风格的表单。如果您使用ASP.NET Web表单,则必须使用Repeater控件或GridView控件,其中Repeater中的每个项目都是Dropdown(绑定了可用商品),一个用于数量和删除按钮的文本框。提供一个添加按钮,将新行添加到网格中。
单击添加新按钮时,需要将行动态添加到网格中。必须使用ViewState或隐藏字段来跟踪要添加的行。
在最后一次单击"计算"按钮时,需要循环浏览中继器项目,并对从每个项目获得的值执行上述计算。
对下拉列表的数量进行硬编码根本不是一个好的做法。