ASP.NET - Paginação com DataGrid via código
Em meu artigo ASP.NET - Paginando dados em um DataGrid mostrei como você pode efetuar a navegação em um datagrid via paginação usando os recursos que o DataGrid oferece.
Apenas para lembrar reproduzo abaixo como podemos fazer isto usando estes recursos do DataGrid:
Para implementar a paginação dos dados no componente DataGrid basta definir as seguintes propriedades :
1- ) AllowPaging="True" -
ativa a paginação no
componente DataGrid
Para customizar a página usamos a tag PagerStyle que permite a navegação pelas páginas de dados. Nesta tag definimos :
1- A propriedade Mode pode receber dois valores que definem como serão os links de navegação :
|
Você pode obter o mesmo efeito via código vb.net. Neste artigo eu vou usar o Web Matrix como editor de código e o seu servidor para testar a página paginacaoSimples.aspx.
Abra no Web Matrix e crie uma nova página Asp.net com o nome de paginacaoSimples.aspx.
Na guia Design inclua um componente DataGrid usando a formatação de sua escolha e um componente Label conforme indicado na figura abaixo:
Agora vamos ao código que deverá ser impostado na guia Code do Web Matrix:
No evento Load da página temos o código: O código define o número da página atual e chama as rotinas para gerar o dataset e efetuar a paginação.
Sub Page_Load(Source as Object, E as EventArgs) dim paginaAtual as integer if request.querystring("pagina") = "" then paginaAtual = 1 else paginaAtual = request.querystring("pagina") end if pegaResultset(paginaAtual) efetuaPaginacao(paginaAtual) end sub |
A rotina pegaResultset tem a seguinte funcionalidade : Nela usamos um DataSet preenchido com os dados da tabela Products do banco de dados Northwind.mdb e exibe o resultado no datagrid.
Note que estamos usando uma das assinaturas do método Fill.
O VB.NET, como toda boa linguagem orientada a objetos que se preze, permite que tenhamos múltiplos métodos com o mesmo nome mas com uma lista de argumentos diferentes. A isto chamamos : Sobrecarga ou Overloading.
Para indicar isto no VB.NET incluímos a palavra-chave Overloads na primeira parte da assinatura do método. (A assinatura é o nome do método).
Nota: O uso da palavra-chave Overloads é opcional e você pode ter métodos com o mesmo nome sem usar Overloads. Veja abaixo um exemplo de sobrecarga.
Overloads Public Function Fill(DataSet, Integer, Integer, String) As Integer
public sub pegaResultset(pagina as integer) dim numreoPagina as integer dim sql as string numreoPagina = 10 * (pagina - 1) Dim ds as DataSet=New DataSet() sql = "select * from Products" Dim cmd As OleDbDataAdapter = New OleDbDataAdapter(sql, objCon) cmd.Fill(ds, numreoPagina , 10, "resultado") tabela_resultset.DataSource = ds.Tables("resultado").DefaultView tabela_resultset.databind() end sub |
A rotina que efetua a paginação é a seguinte :No código usamos o objeto Command para executar um comando SQL usando ExecuteScalar. Este comando irá retornar a quantidade total de registros na tabela Produtcts e irá armazenar o resultado na variável totalRegistros. O total de páginas será obtido pela operação : int(totalRegistros / 10) . Se o resto da divisão por 10 for diferente a zero acrescentamos um ao resultado. Em seguida montamos o texto em pageTexto.
O objeto Command fornece o método ExecuteScalar que permite retornar um valor único de uma fonte de dados. Este método executa uma consulta e retorna a primeira coluna da primeira linha do conjunto de registros retornado
O método ExecuteScalar é o meio mais rápido de se acessar e retornar dados em um base de dados.
Sub efetuaPaginacao(cPagina as integer) Dim cmd As OleDbCommand = New OleDbCommand("Select count(*) from Products", objCon) objCon.Open() Dim totalRegistros as integer = cmd.ExecuteScalar().toString Dim totalPaginas As integer if totalRegistros MOD 10 = 0 then totalPaginas = int(totalRegistros / 10) else totalPaginas = int(totalRegistros / 10) + 1 end if Dim i as integer Dim pageTexto As String = "Navegação : " if cPagina > 1 then pageTexto += "<a href=paginacaoSimples.aspx?pagina=" & cPagina - 1 & ">Anterior</a> " end if for i = 1 to totalPaginas if cPagina = i then pageTexto += "<b>" & i & "</b> " else pageTexto += "<a href=paginacaoSimples.aspx?pagina=" & i & ">" & i & "</a> " end if next i if cPagina < totalPaginas then pageTexto += "<a href=paging.aspx?pagina=" & cPagina + 1 & ">Próxima</a> " end if mostraPaginas.text = pageTexto end sub |
O resultado pode ser visto na figura abaixo:
Observe que ao clicar em um dos links para navegação existe uma referência para a própria página indicando qual a página deve ser exibida: Ex: paginacaoSimples.aspx?pagina=3
Aguarde mais artigos sobre ASP.NET.
João 6:14 Vendo, pois, aqueles homens o sinal que Jesus operara, diziam: este é verdadeiramente o profeta que havia de vir ao mundo.
João 6:15 Percebendo, pois, Jesus que estavam prestes a vir e levá-lo à força
para o fazerem rei, tornou a retirar-se para o monte, ele sozinho.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: