NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosASP.NET › Capítulo 08 : 06
Quer receber novidades e e-books gratuitos?
« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
ASP.NET - CURSO COMPLETO
Autor: Júlio Battisti

Lição 063 - Capítulo 08 - O controle CustomValidator

Este controle permite que criemos nossas próprias regras de validação. Por exemplo, podemos precisar de um controle de validação para verificar se o número digitado em um controle é divisível por 5. Outro exemplo poderia ser a criação de um controle para fazer a validação do dígito verificador de um campo CPF ou CNPJ. Para validações complexas, deste tipo, não temos controles prontos, precisamos criar um controle personalizado, utilizando como base o controle CustomValidator e definindo as funções de validação correspondentes.

A sintaxe para este controle é a seguinte:

<asp:CustomValidator 
id="identificação no código”
runat="server"
ControlToValidate="controle a ser validado
ClientValidationFunction="Nome da função que fará a  validação – para validação no 
     Cliente.
OnServerValidate="Nome do procedimento na seção de  código da página – para 
                                         validação no servidor"
ErrorMessage="Mensagem de erro" 
ForeColor="Cor do texto da mensagem de erro." 
BackColor="Cor de segundo plano da mensagem de  erro."
</asp:CustomValidator>

A validação pode ser definida para acontecer no cliente, sem que a página tenha sido enviada para processamento ou no servidor, quando a página é enviada para processamento.

Para a validação no cliente, especificamos o nome da função de validação, no atributo ClientValidationFunction. A função deve ser escrita em uma linguagem suportada pelo navegador do cliente, como por exemplo VBScript ou JScript.

Para a validação no servidor, especificamos o nome de um procedimento de validação, no atributo OnServerValidate. A função no servidor pode ser escrita em qualquer linguagem suportada pelo Framework .NET, como por exemplo: VB.NET, C#, JScript.NET, C++, etc.

Outro detalhe importante é que podemos utilizar mais do que um controle de validação associado com o mesmo campo. Vamos imaginar um campo quantidade em um formulário de compra. Podemos utilizar um controle RequiredFieldValidator para fazer com que o usuário seja obrigado a digitar um valor neste campo e um controle CustomValidator para garantir que o valor digitado não seja maior do que o valor em estoque. A função de validação do controle CustomValidator pode buscar no banco de dados de estoque a quantidade de itens disponíveis e não aceitar que o usuário digite um valor maior do que o disponível em estoque.

A seguir apresentamos um exemplo da documentação do Framework .NET, onde foi utilizado um controle CustomValidator para fazer com que seja digitado um número para em um campo do formulário. Observe que embora seja uma função simples de validação, não temos um controle específico para esta função. Por isso precisamos criar uma função de validação. No exemplo apresentado, temos a validação no servidor. O nome do procedimento que fará a validação no servidor é definido no atributo OnServerValidate,do controle de validação, conforme indicado no comando a seguir:

OnServerValidate="ServerValidation"

onde ServerValidation é o nome do procedimento, na seção de código da página, que fará a validação para determinar se o número é par ou ímpar.

O procedimento ServerValidation recebe, como primeiro parâmetro, uma referência para o controle de validação e como segundo parâmetro um objeto que contém o valor do campo a ser validado, valor este que é acessível através da propriedade Value deste segundo argumento. Na listagem do exemplo, antes da função de validação, coloquei vários comentários que explicam detalhadamente a utilização dos parâmetros da função de validação.

Na Listagem 8.5 temos o código para o exemplo proposto.

Listagem 8.5 – O controle de validação CustomValidator.

<%@ Page Language="C#" %>
<html>
<head>
   <script  runat=server>
void ValidateBtn_OnClick(object sender, EventArgs e) 
      { 
         if  (Page.IsValid) 
         {
             lblOutput.Text = "A página foi validada com sucesso.";
         }
         else 
         {
             lblOutput.Text = "Página não validada!";
         }
      }
            // Procedimento que faz a validação do  controle.
// Este procedimento recebe dois argumentos.
// O argumento source, do tipo object, é uma referência ao  próprio controle de
// validação.
// O segundo argumento é do tipo ServerValidateEventArgs.
// a sua propriedade Value contém o valor digitado no campo  associado
// ao controle de validação do tipo CustomValidator.
// Por isso, dentro da função ServerValidation, para acessar  o valor digitado
// no campo a ser validado, utilizamos a seguinte  referência:
// args.Value.
// Além disso, utilizamos o método Parse, da estrutura int,  para converter
// a referência args.Value, no valor Int32 correspondente.
void ServerValidation (object source,  ServerValidateEventArgs args)
      {
         try 
         {
            int i =  int.Parse(args.Value);
             args.IsValid = ((i%2) == 0);
         }
         catch
         {
             args.IsValid = false;
         }
      }
</script>    
</head>
<body>
<form runat="server">
    <h3><font  face="Verdana">Exemplo do controle  CustomValidator!!</font></h3>
    <asp:Label id=lblOutput  runat="server" 
           Text="Digite  um número par:" 
           Font-Name="Verdana" 
            Font-Size="10pt" /><br>
      <p>
      <asp:TextBox  id="Text1" 
            runat="server" />
       &nbsp;&nbsp;
       <asp:CustomValidator id="CustomValidator1"
            ControlToValidate="Text1"
            OnServerValidate="ServerValidation"
            Display="Static"
            ErrorMessage="Não é um número par!"
           ForeColor="green"
            Font-Name="verdana" 
           Font-Size="10pt"
            runat="server"/>
      <p>
     <asp:Button  id="Button1"
            Text="Validar" 
            OnClick="ValidateBtn_OnClick" 
            runat="server"/>
 </form>
</body>
</html>

Digite o código da Listagem 8.5 e salve o mesmo em um arquivo chamado chap8ex5.aspx, na pasta chap8, dentro da pasta wwwroot, conforme descrito no item: “Check List para acompanhar os exemplos deste livro”, no Capítulo 6.

Para acessar esta página utilize o seguinte endereço:

http://localhost/chap8/chap8ex5.aspx

No campo de digitação digite 2. Dê um clique no botão Enviar. Observe que nenhuma mensagem de erro é emitida, uma vez que dois é um número par.

Agora digite 5 no campo de digitação. Dê um clique no botão Enviar. Você obterá uma mensagem de erro, conforme indicado na Figura 8.8.

Curso Completo de ASP.NET - Júlio Battisti
Figura 8.8 O controle de validação CustomValidator entrando em ação.

Algumas observações sobre o exemplo.

Na função de validação ServerValidation, utilizamos a estrutura Try – Catch para fazer o tratamento de exceções. Dentro da função ServerValidation, utilizamos o seguinte comando para determinar se o número é par:

args.IsValid = ((i%2) == 0);

Neste caso se o resto da divisão por 2 for zero, significa que o número é par e a propriedade IsValid é definida como True, significando que o valor digitado é par. Se o resto da divisão por dois não for igual a zero, a propriedade IsValid é definida como False, significando que o número digitado é ímpar. Lembre que o operador % retorna o resto da divisão entre dois números inteiros.

Nota: Para maiores informações sobre o tratamento de exceções e sobre os operadores do C#, consulte os Capítulos 3, 4 e 5.

Também utilizamos dois controles do tipo Web Server Controls, para o campo de digitação e para o botão Validar. No Capítulo 8 aprenderemos a utilizar os Web Server Controls.

Utilizamos o evento Click do botão Validar, para determinar se a página foi validade ou não. Apenas para lembrar, a propriedade IsValid do objeto Page somente é True quando todos os controles da página passarem no teste de validação; basta que um único controle não seja validado, para que a propriedade Page.IsValid se torne False.

« Lição anterior Δ Página principal ¤ Capítulos Próxima lição »
Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2024 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI