Jump to content

Archived

This topic is now archived and is closed to further replies.

cintiadel

[Resolvido] validação com validation do visual studio

Recommended Posts

tenho um textbox que deve ser preenchido somente se o valor selecionado no dropdown for Sim que tem valor 1, qual validador devo usar para conseguir essa validação?

Share this post


Link to post
Share on other sites

Neste caso eu não conheço uma forma de configurar o Validator teria que ser feito na mão mesmo, via código.

 

Abraços...

entao eu fiz em javascript, mas queria q ficasse como o restante das validações pq tah aparacendo a caixinha de mensagem e queria só um alert ao lado do campo como nos outros

Share this post


Link to post
Share on other sites

seria mais fácil fazer isso sem validator... basta mudar a propriedade 'Enable' do textBox de acordo com o item selecionado. Este terá um teste logico dentro do evento 'SelectedIndexChanged' do drop, que verifica qual item está selecionado ou não e modifica a propriedade do textBox assim:

 

<asp:TextBox ID="TextBox1" runat="server" Enabled="false" BackColor="white"></asp:TextBox >

       <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
           onselectedindexchanged="DropDownList1_SelectedIndexChanged">
           <asp:ListItem Value="1">Sim</asp:ListItem>
           <asp:ListItem Value="2">Não</asp:ListItem>
           <asp:ListItem Selected="True" Value="0">selecione</asp:ListItem>
       </asp:DropDownList>

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (DropDownList1.SelectedValue == "1")
			{
				TextBox1.BackColor = Color.Beige;
				TextBox1.Enabled = true;
			}
			else
			{
				TextBox1.BackColor = Color.White;
				TextBox1.Text = String.Empty;
				TextBox1.Enabled = false;
			}
		}

espero q ajude....

Share this post


Link to post
Share on other sites

seria mais fácil fazer isso sem validator... basta mudar a propriedade 'Enable' do textBox de acordo com o item selecionado. Este terá um teste logico dentro do evento 'SelectedIndexChanged' do drop, que verifica qual item está selecionado ou não e modifica a propriedade do textBox assim:

 

<asp:TextBox ID="TextBox1" runat="server" Enabled="false" BackColor="white"></asp:TextBox >

       <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
           onselectedindexchanged="DropDownList1_SelectedIndexChanged">
           <asp:ListItem Value="1">Sim</asp:ListItem>
           <asp:ListItem Value="2">Não</asp:ListItem>
           <asp:ListItem Selected="True" Value="0">selecione</asp:ListItem>
       </asp:DropDownList>

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
		{
			if (DropDownList1.SelectedValue == "1")
			{
				TextBox1.BackColor = Color.Beige;
				TextBox1.Enabled = true;
			}
			else
			{
				TextBox1.BackColor = Color.White;
				TextBox1.Text = String.Empty;
				TextBox1.Enabled = false;
			}
		}

espero q ajude....

muito boa sua sugestão tbm, mas eu quero mesmo um alerta ao lado do text box, tipo do validation

Share this post


Link to post
Share on other sites

bem..eu gosto muito de utilizar o customValidator.... assim:

 

<div>
           <asp:Label ID="Label1" runat="server" Visible="false"></asp:Label><br />
           <asp:TextBox ID="TextBox1" runat="server" Enabled="false" BackColor="white"></asp:TextBox>
             
           <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
               <asp:ListItem Value="1">Sim</asp:ListItem>
               <asp:ListItem Value="2">Não</asp:ListItem>
               <asp:ListItem Selected="True" Value="0">selecione</asp:ListItem>
           </asp:DropDownList>
             
           <asp:CustomValidator ID="CustomValidator1" runat="server" OnServerValidate="CustomValidator1_ServerValidate"
               Display="Static"></asp:CustomValidator>
       </div>

 protected void CustomValidator1_ServerValidate(object sender, ServerValidateEventArgs e)
		{
			if (DropDownList1.SelectedValue == "1")
			{
				TextBox1.Enabled = true;
				Label1.Visible = true;
				Label1.Text = "Valor válido.";
				e.IsValid = true;
				
			}
			else 
			{
				TextBox1.Enabled = false;
				CustomValidator1.Text = "Informe 'SIM' para habilitar o text box.";
				//parte comentada seria utilizada no caso de um ValidatorSammary
				//CustomValidator1.Text = "*";
				//CustomValidator1.ErrorMessage = "Informe 'SIM'.";
				e.IsValid = false;
			}
		}

		protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
		{
			CustomValidator1.Validate();
		}

c ainda não for o que você quer, só falar! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Share this post


Link to post
Share on other sites

está dando o seguinte erro:

Server Error in '/Testes' Application.

--------------------------------------------------------------------------------

 

Unable to cast object of type 'System.EventArgs' to type 'System.Web.UI.WebControls.ServerValidateEventArgs'.

 

Bom o seu exemplo é C#, correto?

Eu preciso em VB, mas qto a isso eu converti, mas tah dando erro.

Segue meu código abaixo:

 

Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
		If True Then
			If ddl_necessidades.SelectedValue = "1" Then
				TextBox1.Enabled = True
				args.IsValid = True
			End If
			If True Then
				TextBox1.Enabled = False
				args.IsValid = False
			End If
		End If
	End Sub
[code]

[code]
Protected Sub ddl_necessidades_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddl_necessidades.SelectedIndexChanged
		CustomValidator1.Validate()
	End Sub

preciso também que esse evento só aconteça ao clicar no button

Share this post


Link to post
Share on other sites

o meu exemplo é de C# sim, eu nunca programei em VB mas, fui tentar passar meu código....

quando estava passando, percebi que você fez dois ifs ao inves de um if e um else, então fica assim....

 

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
		CustomValidator1.Validate()

	End Sub

	Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate

		If True Then
			If DropDownList1.SelectedValue = "1" Then
				TextBox1.Enabled = True
				Label1.Visible = True
				Label1.Text = "Valor Válido!"
				args.IsValid = True

			End If
		Else
			TextBox1.Text = String.Empty
			TextBox1.Enabled = False
			CustomValidator1.Text = "Informe 'SIM' para habilitar o text box."
			args.IsValid = False

		End If

	End Sub

Share this post


Link to post
Share on other sites

consegui fazer funcionar

mas preciso saber como faço pra disparar isso só no evento do botão tentei mas n consegui, da aquele erro que eu relatei acima.

por favor conto com sua ajuda

Share this post


Link to post
Share on other sites

consegui fazer funcionar

mas preciso saber como faço pra disparar isso só no evento do botão tentei mas n consegui, da aquele erro que eu relatei acima.

por favor conto com sua ajuda

 

como nunca tinha prog em VB antes, não sabia bem como funcionava a estrutura if e fiz como no c#, na verdade percebi que você não fecha o else, ele está dentro de um if... o cod que eu t dei já faz o que eu t falei... so valida quando aperta o botão.. mas pra funcionar direitinho tem q trocar o codigo do CustomValidator por este aki:

 

 

Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate

		If True Then
			If DropDownList1.SelectedValue = "1" Then
				TextBox1.Enabled = True
				Label1.Visible = True
				Label1.Text = "Valor Válido!"
				args.IsValid = True

			Else
				TextBox1.Text = String.Empty
				TextBox1.Enabled = False
				CustomValidator1.Text = "Informe 'SIM' para habilitar o text box."
				args.IsValid = False

			End If
		End If
	End Sub

 

 

espero que seja isso...

Share this post


Link to post
Share on other sites

outra coisa que esqueci de falar... c não está validando só quando você da um click no botão, pode ser q algum controle esteja com a propriedade 'AutoPostBack' igual a 'True' ou algum lugar do codigo esteja validando a pag quando esta dá post, ai o custom faz a validação...

Share this post


Link to post
Share on other sites

outra coisa que esqueci de falar... c não está validando só quando você da um click no botão, pode ser q algum controle esteja com a propriedade 'AutoPostBack' igual a 'True' ou algum lugar do codigo esteja validando a pag quando esta dá post, ai o custom faz a validação...

pergunta ele só vai deixar passar para a próxima página, se eu selecionar a opção sim?

e onde eu devo por o redirect?

Share this post


Link to post
Share on other sites

outra coisa que esqueci de falar... c não está validando só quando você da um click no botão, pode ser q algum controle esteja com a propriedade 'AutoPostBack' igual a 'True' ou algum lugar do codigo esteja validando a pag quando esta dá post, ai o custom faz a validação...

pergunta ele só vai deixar passar para a próxima página, se eu selecionar a opção sim?

 

 

não estou entendendo... você não disse que queria validar a edição de TextBox?

isso que o código acima faz...

c você está usando isso pra pag, e está redirecionando você tem q colocar um if e mandar validar a pag com o customValidator... c for valida você redireciona

ai ele so vai passar pra prox pag, quando você der um click no botão e o dd tiver com a opção sim selecionada

Share this post


Link to post
Share on other sites

outra coisa que esqueci de falar... c não está validando só quando você da um click no botão, pode ser q algum controle esteja com a propriedade 'AutoPostBack' igual a 'True' ou algum lugar do codigo esteja validando a pag quando esta dá post, ai o custom faz a validação...

pergunta ele só vai deixar passar para a próxima página, se eu selecionar a opção sim?

 

 

não estou entendendo... você não disse que queria validar a edição de TextBox?

isso que o código acima faz...

c você está usando isso pra pag, e está redirecionando você tem q colocar um if e mandar validar a pag com o customValidator... c for valida você redireciona

ai ele so vai passar pra prox pag, quando você der um click no botão e o dd tiver com a opção sim selecionada

 

o caso é o seguinte eu tenho um formulario com varios campos requeridos que eu valido com requeriedfieldvalidator, inclusive esse dropdown.

esse dropdown é se a pessoa possue necessidade especial, se ela selecionar q sim, deve habilitar e obriga-lá a prencher o textbox com a necessidade dela, senão deve continuar, e fazer o cadastro ao clicar no botão e redirecionar para a página de agradecimento.

espero ter sido clara

obrigada

Share this post


Link to post
Share on other sites

coloca o teste do validator no botão que redireciona, mas testa antes c retornou false ou true (e.IsValid), é só você ir adcionando as condições no evento do botão... você deve lembrar q o redirecionamento é:

response.redirect("url",false)... c não, vai dar exceção

Share this post


Link to post
Share on other sites

coloca o teste do validator no botão que redireciona, mas testa antes c retornou false ou true (e.IsValid), é só você ir adcionando as condições no evento do botão... você deve lembrar q o redirecionamento é:

response.redirect("url",false)... c não, vai dar exceção

já tentei colocar no botao como disse e da esse erro: Unable to cast object of type 'System.EventArgs' to type 'System.Web.UI.WebControls.ServerValidateEventArgs'.

 

como devo fazer essa verificação q você falou?

de qualquer forma ele vai redirecionar para essa página pq o usuário n é obrigado a preencher o textbox, ele obrigado a selecionar uma opcao no dropdown, e se selecionar sim ai ele tem que obrigar a preencher o textbox, e no final de tudo sempre redirecionar a página para a de agradecimento pelo cadastro

muito obrigada

Share this post


Link to post
Share on other sites

estranho.... eu fiz este codigo e testei antes de enviar.. não deu este erro....

este erro quer dizer que você está igualando em algum lugar tipos diferentes sem conversão ou q não é possível a conversão.... depois posta seu código para eu testar aki no VisualStudio 2008....

Share this post


Link to post
Share on other sites

a validação da pág é

 

Page.Validate()
if(Page.IsValid)
{
	 //ações
}

pode ser feita tambem a validação dos filtros (controles de um grupo de validação)

 

Page.Validate("nomeGrupo")
if(Page.IsValid)
{
	 //ações
}

Share this post


Link to post
Share on other sites

estranho.... eu fiz este codigo e testei antes de enviar.. não deu este erro....

este erro quer dizer que você está igualando em algum lugar tipos diferentes sem conversão ou q não é possível a conversão.... depois posta seu código para eu testar aki no VisualStudio 2008....

validacao.aspx

<div>
  <asp:DropDownList ID="DropDownList1" runat="server" Font-Size="X-Small" 
Height="20px">
	 <asp:ListItem Value="0" Selected="True">SELECIONE</asp:ListItem>
	 <asp:ListItem Value="1">SIM</asp:ListItem>
	 <asp:ListItem Value="2">NÃO</asp:ListItem>
 </asp:DropDownList>

  
		<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
			ControlToValidate="DropDownList1" ErrorMessage="RequiredFieldValidator" 
			Display="Dynamic"></asp:RequiredFieldValidator>
  
		<br />
<asp:TextBox ID="TextBox1" runat="server" Enabled="false" BackColor="white"></asp:TextBox>
  
<asp:CustomValidator ID="CustomValidator1" runat="server"></asp:CustomValidator>

		<br />

		<asp:Button ID="Button1" runat="server" Text="Button"/>
   </div>

validacao.aspx.vb

Partial Class _Default
	Inherits System.Web.UI.Page

	Protected Sub Button1_Click(ByVal sender As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles Button1.Click

		If True Then
			If DropDownList1.SelectedValue = "1" Then
				TextBox1.Enabled = True
				args.IsValid = True
			Else
				TextBox1.Text = String.Empty
				TextBox1.Enabled = False
				CustomValidator1.Text = "Informe 'SIM' para habilitar o text box."
				args.IsValid = False
			End If
		End If
		CustomValidator1.Validate()

	End Sub
End Class

Share this post


Link to post
Share on other sites

bom...

1 - você não determinou qual controle o CustomValidator deve validar....

2 - você não fez um evento e associou no code para o CustomValidator

3 - já entendi pq esta dando erro de conversão.... você não leu meu codigo direito: o args.IsValid é do evento do CustomValidator.... você fez isso com o args do tipo do botão... acho q nem tem essa propriedade para ele (args do botão)

 

volte a ler o ultimo codigo q eu postei e faça do mesmo jeito que eu fiz, lendo tambem como configurei os controles na parte web..... qualquer coisa você me fala

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.