Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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?

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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....

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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....

Compartilhar este post


Link para o post
Compartilhar em outros 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
}

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.