Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在下拉列表中计算值_C#_Asp.net_Switch Statement - Fatal编程技术网

C# 在下拉列表中计算值

C# 在下拉列表中计算值,c#,asp.net,switch-statement,C#,Asp.net,Switch Statement,我试图在选择下拉列表中的一项时计算一个值。 我试图用一个开关来做这件事,但它不起作用。它总是转到默认值,并且看不到变量的值 我正在从数据库动态生成下拉列表 这是我目前掌握的代码: protected void ddlClub_SelectedIndexChanged(object sender, EventArgs e) { // INSCHRIJFGELD BEREKENEN // variabelen voor berekenen inschrijfg

我试图在选择下拉列表中的一项时计算一个值。 我试图用一个开关来做这件事,但它不起作用。它总是转到默认值,并且看不到变量的值

我正在从数据库动态生成下拉列表

这是我目前掌握的代码:

protected void ddlClub_SelectedIndexChanged(object sender, EventArgs e)
    {
        // INSCHRIJFGELD BEREKENEN
        // variabelen voor berekenen inschrijfgeld
        double club1Price;
        club1Price = 1.25;
        double club2Price;
        club2Price = 5.50;
        double club3Price;
        club3Price = 9.25;
        double price;
        price = 20.00;

        int value;
        value = Convert.ToInt16(ddlClass.SelectedValue.ToString());

        switch (ddlClub.SelectedItem.Text)
        {
            case "club 1":
                if (Double.TryParse(lblAmount.Text, out club1Price)) 
                    club1Total = club1Price * value;
                    string totalRoundClub2 = Convert.ToString(Math.Round(club2Total, 2, MidpointRounding.AwayFromZero));
                    lblAmount.Text = Convert.ToString(totalRoundClub2);
                break;
            case "club 2":
                if (Double.TryParse(lblAmount.Text, out club2Price)) 
                    culb2Total = club2Price * value;
                    string totalRoundClub2 = Convert.ToString(Math.Round(club2Total, 2, MidpointRounding.AwayFromZero));
                    lblAmount.Text = Convert.ToString(totalRoundClub2);
                break;
            case "club 3":
                if (Double.TryParse(lblAmount.Text, out club3Price)) 
                    club3Total = club3Price * value;
                    string totalRoundClub3 = Convert.ToString(Math.Round(club3Total, 2, MidpointRounding.AwayFromZero));
                    lblAmount.Text = Convert.ToString(totalRoundClub3);
                break;
            default:
                if (Double.TryParse(lblAmount.Text, out price)) 
                    total = price * value;
                    string totalRound = Convert.ToString(Math.Round(total, 2, MidpointRounding.AwayFromZero));
                    lblAmount.Text = Convert.ToString(totalRound);
                break;
        }
    }
我的类中的变量:

public partial class Inschrijven : System.Web.UI.Page
{
    double club1Total;
    double club2Total;
    double club3Total;
    double total;
有人能帮我吗

提前谢谢

将断点设置为

switch (ddlClub.SelectedItem.Text)
并检查ddlClub.SelectedItem.Text的值。我怀疑这不是你案件陈述中的字符串之一

我最好使用ddClub中所选项目的有效名称。例如:ddlClub.SelectedValue

让我们调试以下代码:

// the if statement is going to run line below it because there
// is not curly braces to execute a block of code
if (Double.TryParse(lblAmount.Text, out club1Price)) 
    club1Total = club1Price * value;

string totalRoundClub2 = Convert.ToString(Math.Round(club2Total, 2, MidpointRounding.AwayFromZero));
lblAmount.Text = Convert.ToString(totalRoundClub2);
如果解析失败,则将club1Price设置为零

应将其写入以下地址:

if (Double.TryParse(lblAmount.Text, out club1Price))
{
    club1Total = club1Price * value;
}
else
{
    // the parse failed
    club1Price = 1.25;
    club1Total = club1Price * value;
}

string totalRoundClub2 = Convert.ToString(Math.Round(club2Total, 2, MidpointRounding.AwayFromZero));
lblAmount.Text = Convert.ToString(totalRoundClub2);

调试并检查您为ddlClub.SelectedItem.text获得的值从解释中看,它似乎没有保留所选位置阅读此答案我在这里获得了所有所选值,但它似乎跳过了total=price*value;我现在已经做了总计=20.00*值;如果Double.TryParselblAmount.Text、out club2Price被删除,那么这两个选项可以正常工作,因此出于某种原因,这两个选项会出现问题…我已经设置了一个断点,它会获取所有值,但我没有从price中获取值,因此total也为0,并且通过每次选择下拉列表,它都将变为默认值。。。我想需要选择EdItem.Text,因为我想指定俱乐部1需要每人支付1.25英镑ect。但当数据库中添加另一个俱乐部时,下拉列表的所有值都将更改,因为我已将其设置为ASC。例如,当cub 1现在的值为1时,它可能会比值3大。您知道我如何更改/修复代码,以便在我的变量price和total中给出一个值吗?数据库中的Club 1是否有主键?为什么不把它作为价值呢?所以不管列表的顺序是什么。没错,我没有想到:P我会试试的!我现在已经这么做了,但是lblAmount.Text仍然是0。。。它似乎跳过了club3Total=club3Price*value;:s