.NET

17 set, 2010

Criando controles ASP. NET – Parte 02

Publicidade

Este é o segundo artigo da série Criando Controles ASP.NET. No primeiro artigo, nosso foco principal era a estilização de um controle através de resources (CSS, Imagens e JavaScript), também foram apontados outros assuntos como a utilização da interface INamingContainer, o método CreateChildControls. Enfim, os primeiros passos para quem está pensando em criar controles customizados.

Desta vez iremos trabalhar na elaboração de propriedades de configuração para um determinado controle, como declarar e configurar uma propriedade de características simplórias e seus atributos, ou até mesmo propriedades mais complexas como as do tipo coleção que nos exigem um pouco mais de atenção.

Implementação

Você pode criar propriedades a fim de cumprir os mais variados propósitos. Neste artigo nós iremos destacar duas propriedades de finalidades distintas, logo abaixo um breve descritivo dessas propriedades.

  • BorderColor –  Tem como objetivo formatar a borda da TextBox que está inserida dentro do controle. Uma propriedade básica e de fácil entendimento.
  • SourceProperties – De uma complexidade um pouco mais acentuada que o BorderColor, tem como objetivo criar uma espécie de sub-controle com o funcionamento semelhante ao asp:ListItem.

As propriedades de um controle podem receber até dezessete atributos de configuração diferentes – selecionamos quatro atributos para descrever e exemplificar. A escolha desses atributos está diretamente ligada à frequência com eles são acionados quando criamos um controle customizado. Veja a Tabela 01:

*tabela 01.

Ex.:

Como citamos anteriormente, as propriedades podem ser declaradas com o objetivo de suprir os mais variados propósitos. Para exemplificar isso, iremos declarar uma propriedade denominada BorderColor, que é responsável pela cor da borda da TextBox do controle. Veja abaixo a declaração da propriedade e seus atributos:

O controle que terá a cor da sua borda definida através da propriedade BorderColor.

Acompanhe na imagem abaixo o visual do controle antes e após receber a estilização de sua borda.

Antes de receber o estilo através do atributo:

Após ter recebido:

Trabalhar com propriedades de tipos primitivos é muito simples. Desta vez iremos criar uma propriedade com um propósito semelhante ao ListItem utilizado em diversos controles, a complexidade aumenta um pouquinho, mas continua muito fácil entender o funcionamento. Como, por exemplo, o DropDownList abaixo:

O controle receberá uma nova propriedade chamada SourceProperties, que comportará uma coleção do objeto SourceProperty. Ela é responsável pelas definições relacionadas à fonte de dados direcionada ao DataSource. Veja abaixo uma tabela com as propriedades da classe SourceProperty e um breve explicativo:

*tabela 02

Veja na imagem abaixo as definições da classe SourceProperty e seus atributos:

Este artigo é destinado ao público intermediário, não vou focar em explicar conceitos de OOP. Se alguém tiver dúvidas, é só postar um comentário. A propriedade SourceProperties é uma coleção destinada a manipular objetos SourceProperty. Quem está por trás do controle desses objetos é a classe SourcePropertyCollection.

A SourcePropertyCollection deveria implementar as interfaces ICollection e IEnumerable. Pensando em facilitar o entendimento do principal propósito do artigo, iremos fazer com que a classe derive da abstração CollectionBase. Dessa forma, podemos economizar código, sendo que a mesma já estará executando automaticamente as interfaces ICollection e IEnumerable. Abaixo o objeto detalhado:

Agora vamos implementar a propriedade SourceProperties no controle. Como citamos anteriormente, essa propriedade possui algumas particularidades e sua implementação é um pouco mais complexa. Acompanhe o código abaixo:

Note que essa propriedade possui alguns atributos de configuração que não foram explanados na Tabela 01. Para entender melhor o funcionamento de cada item, veja a tabela abaixo:

*tabela 03

Para testar o comportamento das propriedades BorderColor e SourceProperties, basta ir até o toolbox e arrastar o controle até o WebForm. Em seguida, dirija-se até as propriedades do controle.

Note o comportamento da propriedade BorderColor, que é uma a propriedade de implementação básica:
A propriedade SourceProperties é uma propriedade do tipo coleção, existe um editor para efetuar as definições nesse caso.

Você pode acompanhar o resultado criado pelo editor visualizando o HTML do WebForm, veja a imagem abaixo:


Obs.: Em casos de propriedades que possuem as mesmas características da SourceProperties, o Visual Studio disponibiliza automaticamente um editor padrão que facilita a manipulação das informações. Mas pode ocorrer de você ter a necessidade de criar seu próprio editor, e o atributo Editor permite que você faça isso – esse assunto será abordado nos próximos artigos. Acompanhem o esboço abaixo:

Encerramento

Existe uma infinidade de atribuições que você pode fazer a uma propriedade de um controle, ter conhecimento básico sobre o funcionamento desses recursos é essencial para quem está pensando em criar um controle.

Neste artigo abordamos apenas os atributos mais comumente utilizados, o MSDN possui uma grande variedade de material explicativo (artigos, exemplos…) que podem lhe trazer maiores informações.

No próximo artigo iremos adicionar novas funcionalidades, será um artigo focado na concepção do controle ParentDataControl.

Referências:

Requisitos

  • Visual Studio 2008 SP1
  • Framework 3.5 SP1

Segue o código fonte para download.