C#函数无法更新ASP文本框总数

问题描述 投票:-1回答:1

我有一组函数乘以数值的输入,得到3个独立的相应文本框的总和。这工作得很好。

现在我试图包含一个函数,它将这3个分隔值的总和显示在一个单独的文本框“tbCombinedTotals”中。这是一个ASP.net Web应用程序,我相信所有标记都是正确的,但是当我包含我创建的新“CostEstimation”函数时,它不起作用。这是我的C#后端代码:

    protected void TextBox1_checkedchanged(object sender, EventArgs e)
    {
    decimal Cost = 2.50m;
    decimal TextBox1Total = decimal.Parse(TextBox1.Text) * Cost;
    tbTextBoxTotal1.Text = TextBox1Total.ToString();
    CostEstimation();
    }
    //there are 2 more of these for TextBox2_CheckChanged and TextBox3_CheckChanged

    protected void CostEstimation()
    {
        decimal Temp = decimal.Parse(tbTextBoxTotal1.Text);
        decimal Temp2 = decimal.Parse(tbTextBoxTotal2.Text);
        decimal Temp3 = decimal.Parse(tbTextBoxTotal3.Text);
        decimal Temp4 = Temp + Temp2 + Temp3;
        tbCombinedTotals.Text = Temp4.ToString();
    //this should update the "tbCombinedTotals" textbox with the sum of the other 3
    }

第一部分是工作,tbTextBoxTotal 1-3文本框正确更新,但是当我包含“CostEstimation()”行时,它停止工作,并且tbCombinedTotals文本框根本不更新。

我确定我遗漏了一些简单的东西,感谢任何帮助!

编辑:感谢史蒂文和调试器我能够得到它的工作,改成它:

    protected void CostEstimation()
    {
        decimal Temp = 0;
        decimal Temp2 = 0;
        decimal Temp3 = 0;
        decimal Temp4 = 0;
        try
        {
            Temp = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal1.Text));
            Temp2 = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal2.Text));
            Temp3 = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxtotal3.Text));
            Temp4 = Temp + Temp2 + Temp3;
        }
        catch (Exception)
        {
        }
        tbCombinedTotals.Text = Temp4.ToString();
    }

但是,现在我唯一的(我认为)剩下的问题是tbCombinedTotals框仅在填写所有3个盒子时才更新。

我认为这是由于try语句在所有文本框都有值之前无效...

c# asp.net
1个回答
0
投票

因此,尽管在标记中添加了“text =”0“”,但我仍然遇到一个问题,即仅在3个数量框中的每一个中输入值后计算总数。我修改了函数以检查复选框是否包含空字符串,如果是,则将其设置为0:

    protected void CostEstimation()
    {
        decimal Temp = 0;
        decimal Temp2 = 0;
        decimal Temp3 = 0;
        decimal Temp4 = 0;
        if (tbTextBoxTotal1.Text == "")
        {
            tbTextBoxTotal1.Text = "0";
        }
        if (tbTextBoxTotal2.Text == "")
        {
            tbTextBoxTotal2.Text = "0";
        }
        if (tbTextBoxTotal3.Text == "")
        {
            tbTextBoxTotal3.Text = "0";
        }
        try
        {
            Temp = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal1.Text));
            Temp2 = Convert.ToDecimal(string.Format("{0:0.00}", tbTextBoxTotal2.Text));
            Temp3 = Convert.ToDecimal(string.Format("{0:0.00}", ttbTextBoxTotal3.Text));
            Temp4 = Temp + Temp2 + Temp3;
        }
        catch (Exception)
        {
        }
        tbCombinedTotals.Text = Temp4.ToString();
    }

现在作为奖励,我将试图弄清楚为什么添加“Text =”0“”实际上似乎并没有在标记中将文本框的值设置为0,因为显然我添加的if语句显示问题是字符串文本框为空。

© www.soinside.com 2019 - 2024. All rights reserved.