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