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
« 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" /> <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.
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 » |
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