24 de mai. de 2011

99º Dia

Boa Noite!
Neste dia finalizei o que estava dando errado na parte do CheckBoxList..
Finalmente consegui acertar!
Abraço!

ASP .net - Intermediário e Avançado

Fica a dica para quem quiser dar uma olhada: http://pt.scribd.com/doc/41214767/Apostila-ASP-net-Pt-br-1

Começando - C# e VB

Para quem quiser aprender as diferenças e semelhanças entre as duas recomendo: http://pt.scribd.com/doc/47172219/asp35 . É uma apostila de fácil entendimento e bem simples, bem explicado..
Vale a pena dar uma olhada!

Criando custom controls – CheckBoxList com AutoValidação


Alguma vez para resolver um problema você precisou utilizar 2 ou mais controles ASP.NET e ao mesmo tempo pensou: Porque não existe um único controle com todas essas funcionalidades?

Para resolver esse problema, você utilizar um template de WebControlLibrary e criar controles com as funcionalidades que você precisa para sua toolbar.

O que queremos

Precisamos de um CheckBoxList que tenha uma propriedade do tipo boolean, onde possamos informar se o controle requer alguma informação ou não.

A Base

Crie um projeto de WebControlLibrary com seu Visual Studio 2005. O Nome do meu projeto é “CheckBoxList AutoValidator” e com ele foi criado o namespace CheckBoxList_AutoValidator.

Quando o projeto é criado, com ele temos uma classe WebCustomControl1.cs criada também. Exclua essa classe e vamos criar outra classe a partir do template WebCustomControl chamada de MyCheckBoxList.

É criada junta com a nova classe uma propriedade default chamada Text. Vamos altera - lá para o nosso propósito.

Altere o valor Category para “Custom”, o valor da propriedade , altere o nome da propriedade de Text para AutoValidator. Apague a diretiva DefaultPorperty. O valor da diretiva DefaultValue deverá ser igual a true. Será necessário alterar o tipo de dados de String para Boolean da propriedade AutoValidator e fazer com que a classe herde de CheckBoxList e não de WebControl. O Resultado da sua classe será igual à Listagem 01.


NET-25-02-2008pic01.JPG 
Listagem 01 – Código da inicial da classe do MyCheckBoxList.

Com isso nós já temos um controle com uma propriedade customizada. Temos agora criar um método para a “Auto Validação”. Então altere a assinatura da classe para que a mesma além de herdar de CheckBoxList, implemente a Interface IValidator.


Implementando IValidator

Você será obrigado a implementar um método de assinatura void Validate(), e duas propriedades, bool IsValid e string ErrorMessage.

Veja a Listagem 02 à implementação.


NET-25-02-2008pic02.JPG 
Listagem 02 – Trechos obrigatórios após implementar a interface IValidator.

Ainda não começamos a programar o método Validate(). Antes de começar a escrever o código de validação vamos relembrar o que vamos fazer para ter certeza que o controle contém dados inválidos.

Vamos percorrer todos os itens do CheckBoxList e se existir pelo menos 1 selecionado, o controle é válido. Então vamos ver a implementação de código do método Validate na Listagem 03.

NET-25-02-2008pic03.JPG 
Listagem 03 – Validação do controle.

Agora mais um detalhe antes de finalizar e testarmos o controle. Temos que garantir que a página realmente não seja submetida por falha da nossa validação. Vamos isso adicionado o nosso controle dentro dos Validators no momento de validação, dentro do “Ciclo de vida de página” (Page Life Cycle). Para maiores detalhes sobre o assunto acesse ASP.NET Page Life Cycle Overview. Veja na Listagem 04 o código para executarmos essa ação.

NET-25-02-2008pic04.JPG
Listagem 04 –
Adicionando o controle na coleção de Validators da página.

Para testar tudo o que foi feito até agora, compile o projeto. Copie a DLL que estará dentro da pasta bin/debug para um outro local (Sugestão: C:\Arquivos de programas\Microsoft Visual Studio 8\Common7\IDE), adicione o seu controle customizado na toolbar (clique com o botão direito no mouse e escolha a opção “Choose Items” e selecione a DLL na pasta onde você a copiou).

Agora com o seu custom control na toolbar, você precisa apenas de uma aplicação web para teste. A página onde ocorrerá o teste deverá conter apenas o seu controle e um sumary validator para capturar a mensagem de erro que você personalizou. O resultado dever ser algo muito parecido com a Figura 01.

NET-25-02-2008pic05.JPG 


Figura 01 – Imagem a esquerda com erro e a direita sem erro.

Autor: Daniel Cazé.
Fonte: http://www.devmedia.com.br/post-7981-Criando-custom-controls-CheckBoxList-com-AutoValidacao.html