Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando_Bittencourt

Função definitiva p/ paginação

Recommended Posts

Pessoal, vi um post agora no fórum de dúvidas sobre paginação e isso me lembrou q fiz pra um projeto passado uma função de paginação que ficou maneira... eu chamei d função definitiva de paginação pq pelo menos eu, nao teria q codificar mais um menuzinho de paginacao num projeto futuro (pelo menos essa era a idéia rsrs)...

 

bem vamos ao código

 

'Função definitiva que retorna um menu de paginação simples v.1.00'-----------------------------------------------------------------'Fernando Bittencourt novembro/2006'-----------------------------------------------------------------'PARAMETROS:'STRING - Variável que contem o nome da var pagina que sera passada na QS (por exemplo pagina, page, numerodapagina etc...) 'STRING - String do link + atributos adicionais (GET completo tipo.: pedidos.asp?codigo=24&tipo=2)'INTEGER - Página atual do RecordSet'INTEGER - Total de páginas do RecordSet'INTEGER - Total de registros do RecordSet'STRING - CSS Class do A (link), opcional'STRING - CSS Class do Texto normal, opcional'BOOLEAN - Se o menu deve ser resumido (...2,3,4...) ou não, aparecer todas as páginasFunction escreverMenuPaginacao( ByVal p_strVarPagina, _ByVal p_strLink, _ByVal p_intRsAtualPagina, _ByVal p_intRsPaginas, _ByVal p_intRsRegistros, _ByVal p_strClasseLink, _ByVal p_strClasseNormal, _ByVal p_bolResumo )Dim i Dim strSaidaDim intInitVPageDim intPagMinDim intPagMaxDim intFinalPag'Número total de exibições (páginas p/ poder navegar)'se 5 ex.: 2 3 4 5 6 .Dim intDisplayPags' *** O VALOR SOMENTE DEVE SER MUDADO AQUI! ------------------------------------------------------------------ !!!intDisplayPags = 5' *** -------------------------------------------------------------------------------------------------------- !!!intDisplayPags = intDisplayPags - 1If Not ((intDisplayPags mod 2) = 0) Then intDisplayPags = intDisplayPags + 1 'Força conversãop_intRsPaginas = CInt(p_intRsPaginas)p_intRsAtualPagina = CInt(p_intRsAtualPagina)strSaida = "Total de registros: " & p_intRsRegistros & " / Página(s): "'Não resume as páginasIf Not p_bolResumo ThenFor i = 1 To p_intRsPaginasIf (i = p_intRsAtualPagina) ThenstrSaida = strSaida & "<span class='"& p_strClasseNormal &"'>" & i & "</span> "ElsestrSaida = strSaida & "<a class='"& p_strClasseLink &"' href='" & p_strLink & "&"strSaida = strSaida & p_strVarPagina & "=" & i & "'>" & i & "</a> "End IfNextElse'Método resumido'Se for a última mostra os anteriores'definindo Página virtual inicial If (p_intRsAtualPagina = p_intRsPaginas) AND (p_intRsAtualPagina <> p_intRsPaginas) thenIf p_intRsPaginas < (p_intRsAtualPagina - (intDisplayPags - 1)) ThenintInitVPage = 1ElseintInitVPage = (p_intRsAtualPagina - intDisplayPags)End IfElseintInitVPage = (p_intRsAtualPagina - (intDisplayPags / 2))If intInitVPage < 1 Then intInitVPage = 1End If'Se for a primeira página, ele mostra o indicador p/ a mesmaIf Not (intInitVPage = 1) then strSaida = strSaida & "<a class='"& p_strClasseLink &"' href='" & p_strLink & "&"strSaida = strSaida & p_strVarPagina & "=" & 1 & "'>1... </a>"End If'Antes da pagina selecionadaFor i = intInitVPage To (p_intRsAtualPagina - 1)strSaida = strSaida & "<a class='"& p_strClasseLink &"' href='" & p_strLink & "&"strSaida = strSaida & p_strVarPagina & "=" & i & "'>" & i & "</a> " Next'Pagina selecionadastrSaida = strSaida & "<span class='"& p_strClasseNormal &"'>" & i & "</span> "'Depois da selecionada intPagMin = p_intRsAtualPagina + 1'Se for a primeira mostra + If (p_intRsAtualPagina = 1) AND (p_intRsAtualPagina <> p_intRsPaginas) thenIf p_intRsPaginas < (intInitVPage + (intDisplayPags - 1)) ThenintPagMax = p_intRsPaginasElseintPagMax = intPagMin + (intDisplayPags - 1)End IfElseintPagMax = intPagMin + ((intDisplayPags - 2) / 2)End If'Certifica que o final do loop não ultrapassará o numero de paginasIf intPagMax > p_intRsPaginas Then intPagMax = p_intRsPaginasFor i = intPagMin To intPagMaxstrSaida = strSaida & "<a class='"& p_strClasseLink &"' href='" & p_strLink & "&"strSaida = strSaida & p_strVarPagina & "=" & i & "'>" & i & "</a> " NextIf Not (intPagMax = p_intRsPaginas) then strSaida = strSaida & "<a class='"& p_strClasseLink &"' href='" & p_strLink & "&"strSaida = strSaida & p_strVarPagina & "=" & p_intRsPaginas & "'>... " & p_intRsPaginas & "</a> "End IfEnd If escreverMenuPaginacao = strSaida End Function

os valores do RS sao mandados por valor, mas qm quiser pode mandar o RS por referência e tratá-lo la dentro da função, preferi assim na época (nem lembro mais pq)...

 

agora um exemplo de chamada:

 

Response.Write(escreverMenuPaginacao("pagina", "default.asp?tipo=" & intTipo, intPag, intTotalPags, intTotalReg, "", "", true))

falow pessoal espero q ajude bastante gente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi como esta paginação vai listar oque eu tenho no banco...

 

pode me ajudar?

 

 

Muito Obrigado!

 

Marcio Leandro

Desenvolvedor WEB.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi como esta paginação vai listar oque eu tenho no banco...

 

pode me ajudar?

 

 

Muito Obrigado!

 

Marcio Leandro

Desenvolvedor WEB.

Você aplicou essa função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.