GridView e DetailsView: Criando campos customizados
Em ASP.NET 2.0, os controles GridView e DetailsView são projetados para trabalhar em conjunto.
Clique aqui para ler todos os artigos desta edição
GridView e DetailsView
Criando campos customizados
Dino Esposito
Este artigo discute |
Este artigo usa as seguintes tecnologias |
·Criação de classes especializadas para representar campos no GridView e DetailsView; ·Membros da classe DataControlField; ·Criação de um CalendarField e DropDownField; ·Usando estilos. |
·ASP.NET 2.0; ·Visual Studio 2005; ·Criação de componentes e POO. |
Chapéu: ASP.NET |
Download: CuttingEdge0601.exe |
Em ASP.NET 2.0, os controles GridView e DetailsView são projetados para trabalhar em conjunto. Eles não fornecem apenas serviços complementares, mas compartilham também várias classes e componentes. A saída do controle GridView consiste em uma seqüência de linhas, cada uma com um número fixo de colunas. Cada coluna da tabela é mapeada para uma coluna na fonte de dados associada. O controle DetailsView tem um número fixo de linhas (uma para cada coluna na fonte de dados associada) e um número constante de colunas (cabeçalho e valor).
GridView e DetailsView podem ser utilizados em conjunto, para gerar páginas master/detail, como mostrei no artigo da edição passada (“Personalizando os controles DetailsView e FormView”). Ambos representam colunas de dados na fonte de dados associada. Na realidade, a coluna em um GridView e a linha em um DetailsView são do mesmo tipo e são representadas em ASP.NET 2.0 pela mesma classe - DataControlField.
A classe DataControlField é uma classe abstrata e não pode ser utilizada para data binding. Classes descendentes são derivadas para associar dados a controles GridView e DetailsView. No artigo da edição passada, cobrimos alguns desses tipos de campo. Em particular, mostramos como utilizar a classe TemplateField para adicionar validação e características especiais de interface de usuário para edição de campos de dados. A classe TemplateField funciona como um container para código markup. É ideal para construir tipos personalizados de dados e qualquer combinação de campos existentes que poderíamos necessitar. O tipo TemplateField também pode ser utilizado para apresentação de colunas de chave-estrangeira via listas dropdown ou de datas via calendários.
E se quiséssemos uma classe especializada e mais compacta para representar campos através de calendários, por exemplo um tipo CalendarField que apresentasse campos date como uma string quando em modo de visualização e utilizasse um controle Calendar quando em modo de edição e inserção? Como mencionamos, podemos alcançar o mesmo resultado utilizando um TemplateField, mas isso seria como utilizar objetos late-bound versus objetos early-bound. Uma página que utilize um CalendarField será mais fácil de ler e até um pouco mais rápida de ser processada em tempo de execução.
Abordaremos o projeto e implementação de custom data fields (que chamaremos a partir de agora de simplesmente “campos personalizados”), e mostraremos como codificá-los através de alguns exemplos: CalendarField para apresentar valores date e DropDownField para apresentar valores de chave-estrangeira definidos em uma fonte de dados externa.
A classe DataControlField
A classe DataControlField em ASP.NET 2.0 é análoga à classe DataGridColumn utilizada extensivamente com controles DataGrid em ASP.NET 1.x, e só é utilizada pelos controles GridView e DetailsView. Porém, se formos escrever um controle data-bound personalizado, que requer ligação à colunas de dados, podemos utilizar o tipo DataControlField para associar colunas de dados ao controle de interface de usuário.
Como vimos, a DataControlField é uma classe abstrata que herda diretamente de System.Object e implementa a interface IStateManager. A Tabela 1 relaciona os métodos e propriedades da classe. Como podemos ver, a classe oferece algumas propriedades para suporte a estilos: ItemStyle, HeaderStyle, FooterStyle e ControlStyle. Em ASP.NET, propriedades de estilo não são persistidas no ViewState. A classe Style, da qual todas as propriedades de estilo derivam, implementa IStateManager para processar a persistência no ViewState. Para utilizar essa característica específica, classes que expõem propriedades de estilo, tipicamente implementam por si próprias a interface IStateManager, para delegar a persistência com ViewState. Posteriormente retornaremos a esse assunto.
Propriedade |
Descrição |
AccessibleHeaderText |
Obtém ou determina o texto que será apresentado como o valor da propriedade AbbreviatedText em alguns controles, por razões de acessibilidade |
ControlStyle |
Obtém as propriedades de estilo para qualquer controle de entrada usado nos modos de edição ou inserção |
FooterStyle |
Obtém as propriedades de estilo para o rodapé (footer) do campo. Aplicável somente ao controle GridView |
FooterText " |
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo