I tried this and it's working for me.
protected void Page_Load(object sender, EventArgs e)
{
//set values
lblProduct1UnitPrice.Text = "100";
lblProduct2UnitPrice.Text = "200";
lblProduct3UnitPrice.Text = "100";
//populate DropDownList
for(int i = 0; i < 100; i++)
{
if (i > 0)
{
//add
product1DropDown.Items.Add(i.ToString());
product2DropDown.Items.Add(i.ToString());
product3DropDown.Items.Add(i.ToString());
}
else
{
//add - for 0, show empty (blank)
product1DropDown.Items.Add("");
product2DropDown.Items.Add("");
product3DropDown.Items.Add("");
}
}
}
private void CalculateGrandTotal()
{
decimal subtotal1 = 0m; //use 'm' for decimal
decimal subtotal2 = 0m; //use 'm' for decimal
decimal subtotal3 = 0m; //use 'm' for decimal
try
{
//calculate subtotal1 - only calculate if CheckBox is enabled
if (checkBox1.Enabled && !String.IsNullOrEmpty(product1DropDown.Text))
{
//calculate subtotal
subtotal1 = CalculateSubtotal(product1DropDown.Text, lblProduct1UnitPrice.Text);
}
//set value
lblProduct1Subtotal.Text = subtotal1.ToString("$###,##0.00");
}
catch(Exception ex)
{
//ToDo: log msg
//set value
lblMsg.Text = "Error (CalculateGrandTotal 1) - " + ex.Message;
//uncommenting the following line may be useful for debugging
//throw ex;
}
try
{
//calculate subtotal 2 - only calculate if CheckBox is enabled
if (checkBox2.Enabled && !String.IsNullOrEmpty(product2DropDown.Text))
{
//calculate subtotal
subtotal2 = CalculateSubtotal(product2DropDown.Text, lblProduct2UnitPrice.Text);
}
//set value
lblProduct2Subtotal.Text = subtotal2.ToString("$###,##0.00");
}
catch(Exception ex)
{
//ToDo: log msg
//set value
lblMsg.Text = "Error (CalculateGrandTotal 2) - " + ex.Message;
//uncommenting the following line may be useful for debugging
//throw ex;
}
try
{
//calculate subtotal3 - only calculate if CheckBox is enabled
if (checkBox3.Enabled && !String.IsNullOrEmpty(product3DropDown.Text))
{
//calculate subtotal
subtotal3 = CalculateSubtotal(product3DropDown.Text, lblProduct3UnitPrice.Text);
}
//set value
lblProduct3Subtotal.Text = subtotal3.ToString("$###,##0.00");
}
catch(Exception ex)
{
//ToDo: log msg
//set value
lblMsg.Text = "Error (product3DropDown_SelectedIndexChanged) - " + ex.Message;
//uncommenting the following line may be useful for debugging
//throw ex;
}
//calculate
decimal grandTotal = subtotal1 + subtotal2 + subtotal3;
//set value
lblGrandTotal.Text = grandTotal.ToString("$###,##0.00");
}
private decimal CalculateSubtotal(string strQty, string strUnitPrice)
{
int qty = 0;
decimal unitPrice = 0m;
decimal subtotal = 0m;
//clear msg
lblMsg.Text = string.Empty;
if (!String.IsNullOrEmpty(strQty))
{
//try to convert
Int32.TryParse(strQty, out qty);
}
else
{
throw new Exception("Error: Qty is null or empty");
}
if (!String.IsNullOrEmpty(strUnitPrice))
{
//try to convert
Decimal.TryParse(strUnitPrice, out unitPrice);
//calculate
subtotal = qty * unitPrice;
}
else
{
throw new Exception("Error: UnitPrice is null or empty");
}
return subtotal;
}
protected void checkBox1_CheckedChanged(object sender, EventArgs e)
{
////uncomment for debugging
//lblMsg.Text = "Info: checkBox1.Checked: " + checkBox1.Checked.ToString();
//System.Diagnostics.Debug.WriteLine("Info: checkBox1.Checked: " + checkBox1.Checked.ToString());
//set value
product1DropDown.Enabled = checkBox1.Checked;
if (!product1DropDown.Enabled)
{
//not enabled - reset values
product1DropDown.Text = string.Empty;
lblProduct1Subtotal.Text = "$0.00";
}
//calculate
CalculateGrandTotal();
}
protected void checkBox2_CheckedChanged(object sender, EventArgs e)
{
//uncomment for debugging
//lblMsg.Text = "Info: checkBox2.Checked: " + checkBox2.Checked.ToString();
//set value
product2DropDown.Enabled = checkBox2.Checked;
if (!product2DropDown.Enabled)
{
//not enabled - reset values
product2DropDown.Text = string.Empty;
lblProduct2Subtotal.Text = "$0.00";
}
//calculate
CalculateGrandTotal();
}
protected void checkBox3_CheckedChanged(object sender, EventArgs e)
{
//uncomment for debugging
//lblMsg.Text = "Info: checkBox3.Checked: " + checkBox3.Checked.ToString();
//set value
product3DropDown.Enabled = checkBox3.Checked;
if (!product3DropDown.Enabled)
{
//not enabled - reset values
product3DropDown.Text = string.Empty;
lblProduct3Subtotal.Text = "$0.00";
}
//calculate
CalculateGrandTotal();
}
protected void product1DropDown_SelectedIndexChanged(object sender, EventArgs e)
{
CalculateGrandTotal();
}
protected void product2DropDown_SelectedIndexChanged(object sender, EventArgs e)
{
CalculateGrandTotal();
}
protected void product3DropDown_SelectedIndexChanged(object sender, EventArgs e)
{
CalculateGrandTotal();
}
}
}