Fernando Amaral

Controles ListView e DataPager em ASP.NET 3.5

Desde o lançamento da primeira versão do ASP.NET a Microsoft incluiu em suas IDEs diversos controle de listagem de dados: DataGrid, GridView, Repeater entre outros. Embora sejam todos controles de listagem de dados, eles tem focos diferentes: o Repeater permite maior controle sobre o conteúdo renderizado, o DataList veio otimizado para exibição de dados em várias colunas etc. A evolução mesmo ficou por conta dos controles “multifuncionais”, inicialmente o DataGrid na versão 1.X, o GridView surgindo na versão 2.0 trazendo novas características e agora, no ASP.NET 3.5, o ListView.

O ListView é tudo de bom: Permite maior controle sobre o conteúdo gerado através de diversos eventos e templates, e, na minha opinião, o mais interessante: agora com um InsertItemTemplate. O que isto significa? As operações de insert para o DataGrid e para o GridView eram órfãs e tinham que ser tratadas a parte. Particularmente, com o GridView, eu colocava um Formview em modo de inserção no EmptyDataTemplate do GridView, e, ao clicar em um botão inserir normalmente colocado sobre o cabeçalho de uma coluna, desconectava o controle de seu datasource. O efeito era que a listagem de dados desaparecia dando lugar ao controle para inserção.Agora finalmente posso ter todas as operações (Select, Insert, Update, Delete) em um mesmo controle! A inserção é por padrão feita próxima ao rodapé do Listview.

ListView na prática

Se você já usou algum ancestral do ListView não terá qualquer dificuldade em se familiarizar com este novo controle. Neste exemplo utilizo a boa e velha base de dados NorthWind, rodando em uma instancia do SQL Server 2005 Express. Vale lembrar que você pode baixar esta base de dados como um download independente a qualquer momento, através do site da Microsoft, ou utilize qualquer base de dados de sua preferência.

Primeiramente abra o Visual Studio 2008, clique em New Web Site. Selecione .NET Framework 3.5 em na parte superior da janela, marque a opção ASP.NET Web Site e escolha a linguagem de sua preferência.

Abra a guia Data na caixa de ferramentas. Neste tutorial vamos trabalhar com três controles: ListView, DataPager e SqlDataSource. Observe na asp3imagem abaixo os controles circulados:

Inicialmente jogue um controle ListView sobre o WebForm.

Na SmartTag do controle, clique em New data source, desta forma o Visual Studio vai criar um novo controle de acesso a dados. Poderíamos ter feito isto manualmente, arrastando um controle SqlDataSource para o WebForm.

É exibido o DataSource Configuration Wizard. Na primeira etapa devemos informar a origem dos dados. Selecione Database e clique em Ok.

Na próxima etapa devemos configurar a conexão:

Clique em New Connection e informe os dados de sua conexão, como no exemplo abaixo:

De volta ao assistente, clique em Next. Nesta etapa você deve informar se deseja salvar a string de conexão no arquivo de configuração da aplicação (Web.config). Marque sim e clique em Next.

Agora é o momento de informar a tabela ou a consulta que vai dar origem aos dados.

No exemplo abaixo selecionei a tabela Employees com algumas colunas.

Antes de prosseguir, clique em Advanced e marque a opção Generate Insert, Update, and Delete statements para que o Visual Studio produza automaticamente as instruções Sql para que o ListVew possa incluir, atualizar e excluir dados automaticamente.

Importante observar que para esta opção estar habilitada é fundamental que entre as colunas selecionadas estejam aquelas que compõem a chave primária da tabela. No exemplo acima trata-se da coluna EmployeeID. 

Clique em Next, nesta última opção do assistente você pode testar a consulta gerada. Clique em Finish.

Se observarmos o código gerado para o ListView até o momento é demasiadamente simples, pois ainda não definimos nenhuma propriedade além de DataSourceID:

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1">

 </asp:ListView>

Vamos tratar de configurar o ListView. Voltando a área de design, na Smart tag do ListView clique em configure ListView:

Nesta janela podemos configurar as funcionalidade principais do ListView. Primeiramente um Layout, teste todas as opções e veja o comportamento na janela Preview. Abaixo você pode selecionar um estilo. Em opções devemos informar se o ListView vai ter habilitadas funções de edição, inserção, exclusão e paginação. Para este exemplo deixa marcado todas as opções, com exceção de paginação:

Clique em ok e rode a aplicação. Observe que temos agora uma listagem de dados 100% funcional. Observe que a linha de inserção é incluída no junto ao rodapé da listagem:

DataPager

Assim como seus ancestrais, o ListView tem paginação nativa embutida. Porém agora temos um controle de paginação à parte: O DataPager.

Curioso é que o DataPager funciona apenas com o ListView. Você deve estar se perguntando: Então porque usá-lo ao invés da paginação “embutida” no ListView? Como um controle separado temos mais poder sobre como queremos nossa paginação. Também devemos lembrar que o DataPager não foi concebido para funcionar exclusivamente com o ListView, mas com qualquer controle que implemente a interface IPageableItemContainer. No ambiente do ASP.NET 3.5 este é o único controle nativo que implementa tal interface.

Mãos a obra. Arraste um controle DataPager para o Web Form. Na janela de propriedades do controle, defina PagedControlId para ListView1 e PageSize para 5, pois a tabela que escolhi para o exemplo possui menos que 10 registros:

Na Smart Tag do DataPager, defina um estilo de paginação, que pode ser com botões do tipo próximo/anterior ou mesmo numérica. Para o exemplo escolhi Próximo/anterior:

Neste momento, ao rodar a aplicação, já temos nosso ListView com as funcionalidades de paginação em funcionamento:

Últimos artigos relacionados:
Refatoração (Refactoring) em Visual Studio 2008
Medindo a Performance de seu Código com Visual Studio Team System 2008
Code Snippets no Visual Studio 2008
Análise de Código com Visual Studio Team System 2008
.NET independente de plataforma? Uma introdução ao Mono