Criando User Controls com ASP.NET e AJAX - Revista .net Magazine 91
Neste artigo serão apresentados os principais conceitos e aplicações da utilização de User Controls em páginas ASP.NET. O artigo aborda também conceitos relacionados ao Ajax, mais especificamente, a respeito da biblioteca AjaxControlToolkit.
Neste artigo serão apresentados os principais conceitos e aplicações da utilização de User Controls em páginas ASP.NET. O artigo aborda também conceitos relacionados ao Ajax, mais especificamente, a respeito da biblioteca AjaxControlToolkit. Todos estes conceitos serão úteis para o desenvolvimento de uma aplicação unindo estas duas tecnologias, na construção de um controle DropDownList personalizado para multisseleção de opções.
Os User Controls são úteis em situações onde necessitamos de controles que não estão presentes, por exemplo, na toolbox do Visual Studio, ou quando temos em várias páginas um mesmo conjunto de controles com o mesmo objetivo. Nestes casos, surge a necessidade de criarmos controles personalizados, que podem ser reutilizados em diversas partes da aplicação, contribuindo para a manutenibilidade do software. É uma ótima opção para criação de filtros padrões de usuário que são utilizados em várias partes do sistema, como por exemplo, em páginas de relatórios que utilizam filtros para geração dos mesmos.
Criação de User Controls
O artigo começa apresentando os conceitos relacionados aos User Controls, um recurso disponibilizado pelo Framework .NET que possibilita ao desenvolvedor criar seus próprios controles de acordo com sua necessidade. Serão demonstrados também conceitos a respeito da biblioteca open-source AjaxControlToolkit, que disponibiliza vários componentes Ajax. Complementando o artigo, será mostrado como desenvolver um User Control para multisseleção de opções, simulando um Dropdownlist com Checkbox, utilizando o controle CollapsiblePanel da biblioteca AjaxControlToolkit para realizar tal tarefa. Posteriormente, este controle será incluído em uma página ASP.NET que utilizará os dados selecionados no controle para geração de um relatório.
Muitas vezes o desenvolvedor se depara com situações em que precisa de um determinado controle para desempenhar uma função específica na aplicação, porém ele não se encontra na toolbox do Visual Studio. Em outros casos, um mesmo conjunto de controles é utilizado em várias páginas, realizando as mesmas funções, obrigando o programador a criar rotinas que se repetem em várias partes do programa, prejudicando a qualidade do software.
Neste contexto, a utilização de User Controls é uma ótima solução, pois possibilita que o desenvolvedor crie seus próprios controles, conforme sua necessidade e criatividade. O código desenvolvido para o controle é gerado em um arquivo separado da página, e seu conteúdo pode ser reutilizado em qualquer página da aplicação. Esta característica dos User Controls traz dois benefícios para o sistema: redução da quantidade de código escrito, uma vez que é necessário apenas 'linkar' o controle à página, e facilidade para dar manutenção nas páginas em que ele estiver inserido. Imagine que, ao invés de um User Control você tenha um mesmo conjunto de controles espalhados em diversas páginas da aplicação, que são responsáveis por desempenhar as mesmas funcionalidades. Caso algum dia seja necessário efetuar uma alteração no layout destes controles, ou em uma de suas funcionalidades, todas as páginas deverão ser alteradas, acarretando um enorme trabalho para o desenvolvedor e desperdício de tempo, contrariando os princípios da orientação a objetos. Com a utilização de User Controls, as modificações são feitas apenas nos arquivos do controle, e estas alterações são refletidas em todas as páginas que o utilizam.
Essas características provenientes da utilização de User Controls irão contribuir para a manutenibilidade, reusabilidade, encapsulamento e abstração do software, uma vez que toda a complexidade está embutida no controle. Este deve disponibilizar apenas as interfaces para que seus elementos possam ser acessados dentro de uma determinada página da aplicação em que ele esteja contido.
User Controls, para o ASP.NET, são um conjunto de um ou mais Server Controls ou elementos HTML que encapsulam determinadas funcionalidades, e expõem métodos e propriedades públicos para acesso a seus recursos. Podemos pensar em um User Control como uma página aspx logicamente convertida como um controle.
Assim como os Web Forms, os User Controls possuem um arquivo de design, porém com uma outra extensão, .ascx, onde os controles podem ser adicionados ou criados, e um arquivo de code-behind relacionado, o qual permite ao desenvolvedor criar toda a lógica do controle, utilizando métodos, propriedades, atributos, eventos, entre outras estruturas, que são encapsuladas com o objetivo de prover as funcionalidades do controle.
A Figura 1 apresenta a hierarquia de classes de um User Control. Perceba que ela segue o mesmo modelo das páginas aspx. Observe também que ambas as classes herdam da classe Control. Isso possibilita que as mesmas estruturas utilizadas nas páginas aspx possam ser utilizadas nos User Controls como, por exemplo, os eventos Load, Init, PreRender, Render, e Unload.
Figura 1. Hierarquia de classes dos User Controls
User Controls podem ser adicionados às páginas tanto em tempo de criação da página (design-time), apenas arrastando o controle para a mesma (drag-and-drop), ou em tempo de execução, via código, podendo ser manipulado como um objeto. Essa flexibilidade permite ao desenvolvedor carregar estes controles dinamicamente, baseados em inputs do usuário, eventos disparados ou outro tipo de informação dinâmica.
Diferenças entre controles
Ao criar uma aplicação ASP.NET, o desenvolvedor geralmente possui três tipos de controles: Server Controls, User Controls e Custom Controls, este último também conhecido como composite controls. Os Server Controls são controles fornecidos pelo framework .NET, ou seja, são arquivos DLL compilados que não podem ser editados, permitindo apenas sua manipulação via propriedades públicas disponibilizadas. Os Users Controls são controles construídos a partir de Server Controls, tags html ou outros componentes, podendo ser completamente editados e alterados, seja em tempo de execução ou de design. Já os Custom Controls são controles similares ao User Controls. A diferença é que estes controles são compilados em assemblies (DLL) e podem ser utilizados como os Server Controls, ou seja, são Server Controls que o programador pode criar. Neste ponto, os Custom Controls são mais flexíveis que os User Controls, pois podem ser utilizados em outros projetos bastando apenas adicionar a ele a DLL gerada, possibilitando sua inclusão a toolbox do Visual Studio. Já os User Controls geralmente necessitam que todo o código seja copiado e adicionado ao novo projeto.
O Ajax Control Toolkit é uma biblioteca open-source contendo uma série de controles AJAX que podem ser utilizados em aplicações ASP.NET Web Forms. Uma vantagem do uso destes controles é a facilidade com que eles podem ser adicionados e trabalhados no projeto. A biblioteca pode ser adicionada a toolbox do Visual Studio, e, para adicionarmos um de seus controles em uma página, basta apenas arrastarmos o mesmo no local desejado. Cada controle disponibiliza conjunto de propriedades públicas que permitem ao desenvolvedor configurá-las conforme desejado.
Vale ressaltar que ao utilizarmos qualquer componente Ajax em uma página ASP.NET, é necessário adicionar antes um controle ScriptManager, que já vem integrado com o framework ASP.NET AJAX para gerenciar as comunicações assíncronas entre cliente e servidor.
Este controle é responsável por gerenciar todos os controles ajax presentes na página, possibilitando que ela seja renderizada parcialmente, fato este que ocorre, por exemplo, quando são utilizados controles AJAX do tipo UpdatePanel para atualizar apenas uma determinada parte da página.