Usuário com melhor resposta
somar valores dropdownlis

Pergunta
-
Olá,
como posso somar os valores de uma dropdownlist.
Tenho o seguinte codigo:
int soma12 = Convert.ToInt32(DropPerc1.SelectedValue) + Convert.ToInt32(DropPerc1.SelectedValue); int soma123 = Convert.ToInt32(DropPerc1.SelectedValue) + Convert.ToInt32(DropPerc1.SelectedValue) + Convert.ToInt32(DropPerc3.SelectedValue); int soma1234 = Convert.ToInt32(DropPerc1.SelectedValue) + Convert.ToInt32(DropPerc1.SelectedValue) + Convert.ToInt32(DropPerc3.SelectedValue) + Convert.ToInt32(DropPerc4.SelectedValue); //ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "alert('" + soma12 + "');", true); if (soma12 > 100 || soma12 < 100 && soma123 > 100 || soma123 < 100 && soma1234 > 100 || soma1234 < 100) { ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "alert('A percentagem não pode ser menor ou maior que 100%');", true); }
mas da me este erro :input string was not in correct format
Respostas
-
Olá Diogo,
tente fazer dessa forma:
int soma12 = (DropPerc1.Text.Length > 0 ? Int32.Parse(DropPerc1.Text) : 0) + (DropPerc2.Text.Length > 0 ? Int32.Parse(DropPerc2.Text) : 0); int soma123 = soma12 + (DropPerc3.Text.Length > 0 ? Int32.Parse(DropPerc3.Text) : 0); int soma1234 = soma123 + (DropPerc4.Text.Length > 0 ? Int32.Parse(DropPerc4.Text) : 0); if (soma12 > 100 || soma12 < 100 && soma123 > 100 || soma123 < 100 && soma1234 > 100 || soma1234 < 100) { ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "alert('A percentagem não pode ser menor ou maior que 100%');", true); }
Continue carregando os drop's da forma que está.
O que estava acontecendo era que provavelmente você estava tentando converter uma string "" para int.
Da forma que está agora, antes de atribuir o valor para a variável do tipo int é feita uma validação e o código abaixo faz isso:
int soma12 = DropPerc1.Text.Length > 0 ? Int32.Parse(DropPerc2.Text) : 0;
int Soma12 = SE DropPerc1.Text.Length > 0 ENTÃO DropPerc1.Text Senão 0;
A sua lógica no if eu não mudei.
Testa ae e de um retorno.
Att
Wennder A. Santos
Se foi útil, marque como útil. Se respondeu sua pergunta ou sanou sua dúvida, marque como resposta.
- Marcado como Resposta DiogoMBM sábado, 25 de janeiro de 2014 15:34
- Editado Wennder SantosMVP sábado, 25 de janeiro de 2014 16:43
Todas as Respostas
-
Olá Diogo,
Lembre-se de que a propriedade SelectedValue não é a mesma coisa que a propriedade text.
Se você quer fazer um calculo com o valor que está colocando no text, então mude para:
SeuDropDownList.Text
Se tiver dificuldades, poste como está carregando o seu DropDownList para eu te ajudar melhor, mas, isso já deve resolver.
Teste e de um retorno.
Att
Wennder A. Santos
Se foi útil, marque como útil. Se respondeu sua pergunta ou sanou sua dúvida, marque como resposta.
- Editado Wennder SantosMVP sábado, 25 de janeiro de 2014 16:43
-
coloquei com text e da me o mm erro.
int soma12 = Int32.Parse(DropPerc1.Text) + Int32.Parse(DropPerc1.Text); int soma123 = Int32.Parse(DropPerc1.Text) + Int32.Parse(DropPerc1.Text) + Int32.Parse(DropPerc3.Text); int soma1234 = Int32.Parse(DropPerc1.Text) + Int32.Parse(DropPerc1.Text) + Int32.Parse(DropPerc3.Text) + Int32.Parse(DropPerc4.Text); if (soma12 > 100 || soma12 < 100 && soma123 > 100 || soma123 < 100 && soma1234 > 100 || soma1234 < 100) { ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "alert('A percentagem não pode ser menor ou maior que 100%');", true); }
-
-
<asp:DropDownList ID="DropPerc1" runat="server" Width="302px" Height="29px" CssClass="labelStyle2">
<asp:ListItem></asp:ListItem>
<asp:ListItem>5</asp:ListItem>
<asp:ListItem>10</asp:ListItem>
<asp:ListItem>15</asp:ListItem>
<asp:ListItem>20</asp:ListItem>
<asp:ListItem>25</asp:ListItem>
<asp:ListItem>30</asp:ListItem>
<asp:ListItem>35</asp:ListItem>
<asp:ListItem>40</asp:ListItem>
<asp:ListItem>45</asp:ListItem>
<asp:ListItem>50</asp:ListItem>
<asp:ListItem>55</asp:ListItem>
<asp:ListItem>60</asp:ListItem>
<asp:ListItem>65</asp:ListItem>
<asp:ListItem>70</asp:ListItem>
<asp:ListItem>75</asp:ListItem>
<asp:ListItem>80</asp:ListItem>
<asp:ListItem>85</asp:ListItem>
<asp:ListItem>90</asp:ListItem>
<asp:ListItem>95</asp:ListItem>
<asp:ListItem>100</asp:ListItem>
</asp:DropDownList> -
-
-
Olá Diogo,
tente fazer dessa forma:
int soma12 = (DropPerc1.Text.Length > 0 ? Int32.Parse(DropPerc1.Text) : 0) + (DropPerc2.Text.Length > 0 ? Int32.Parse(DropPerc2.Text) : 0); int soma123 = soma12 + (DropPerc3.Text.Length > 0 ? Int32.Parse(DropPerc3.Text) : 0); int soma1234 = soma123 + (DropPerc4.Text.Length > 0 ? Int32.Parse(DropPerc4.Text) : 0); if (soma12 > 100 || soma12 < 100 && soma123 > 100 || soma123 < 100 && soma1234 > 100 || soma1234 < 100) { ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, "alert('A percentagem não pode ser menor ou maior que 100%');", true); }
Continue carregando os drop's da forma que está.
O que estava acontecendo era que provavelmente você estava tentando converter uma string "" para int.
Da forma que está agora, antes de atribuir o valor para a variável do tipo int é feita uma validação e o código abaixo faz isso:
int soma12 = DropPerc1.Text.Length > 0 ? Int32.Parse(DropPerc2.Text) : 0;
int Soma12 = SE DropPerc1.Text.Length > 0 ENTÃO DropPerc1.Text Senão 0;
A sua lógica no if eu não mudei.
Testa ae e de um retorno.
Att
Wennder A. Santos
Se foi útil, marque como útil. Se respondeu sua pergunta ou sanou sua dúvida, marque como resposta.
- Marcado como Resposta DiogoMBM sábado, 25 de janeiro de 2014 15:34
- Editado Wennder SantosMVP sábado, 25 de janeiro de 2014 16:43
-