Ir para conteúdo

POWERED BY:

Arquivado

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

jrcardozo

[Resolvido] Classe para paginação de registros

Recommended Posts

<%option explicit%>

<%

const LIMIT_PAGE = 10

 

CLASS clsPaginacao

dim imagemPrimeiro, imagemAnterior, imagemProximo, imagemUltimo, classeCss, classeCssPgAtual, paginaAtual, maximoLink, totalRegistro, link, strReplacePagina, paginaInicial, pastaImagem, registroPagina

function paginar()

dim i, totalPagina, intTemp01, intTemp02, intTemp03, intTemp04, intTemp05, inicial, final, strTemp, posAux

if totalRegistro > 1 then

if maximoLink < 10 or not isNumeric(maximoLink) then maximoLink = 10

if trim(pastaImagem)<>"" then

if right(pastaImagem,1) = "/" then pastaImagem = left(pastaImagem,len(pastaImagem)-1)

imagemAnterior = pastaImagem &"/"& imagemAnterior

imagemPrimeiro = pastaImagem &"/"& imagemPrimeiro

imagemProximo = pastaImagem &"/"& imagemProximo

imagemUltimo = pastaImagem &"/"& imagemUltimo

end if

imagemAnterior = "<img src="""&imagemAnterior&""" border=""0"" width=""10"">"

imagemPrimeiro = "<img src="""&imagemPrimeiro&""" border=""0"" width=""10"">"

imagemProximo = "<img src="""&imagemProximo&""" border=""0"" width=""10"">"

imagemUltimo = "<img src="""&imagemUltimo&""" border=""0"" width=""10"">"

classeCss = iif(trim(classeCss)<>"","class="""&classeCss&"""","style=""font:12px Arial;text-decoration:none;color:#000000;""")

classeCssPgAtual = iif(trim(classeCssPgAtual)<>"","class="""&classeCssPgAtual&"""",classeCss)

if trim(strReplacePagina) = "" then strReplacePagina = "#pag#"

if not isNumeric(paginaAtual) or paginaAtual < 1 then paginaAtual = 1

if not isNumeric(paginaInicial) then paginaInicial = 1

if trim(link) = "" then link = lCase(Request.ServerVariables("SCRIPT_NAME")&"?pagina="&strReplacePagina&"")

paginaAtual = cInt(paginaAtual)

totalPagina = fix(totalRegistro / registroPagina) + iif((totalRegistro mod registroPagina) <> 0, 1, 0)

if paginaAtual > totalPagina then paginaAtual = totalPagina

intTemp01 = len(paginaAtual)

intTemp02 = intTemp01 - 1

intTemp03 = left(paginaAtual,intTemp02)

intTemp04 = right(paginaAtual,1)

intTemp05 = intTemp03 & 0

if intTemp04 <> 0 then

inicial = intTemp05 + 1

final = inicial + (maximoLink-1)

else

inicial = intTemp05 - (maximoLink-1)

final = intTemp05

end if

final = cInt(final)

inicial = cInt(inicial)

totalPagina = cInt(totalPagina)

if final > totalPagina then final = totalPagina

if paginaAtual > 1 then

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, 1) &""""&classeCss&">"&imagemPrimeiro&"</a> "

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, paginaAtual - 1) &""""&classeCss&">"&imagemAnterior&"</a> "

if paginaAtual > maximoLink then

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, inicial - 1) &""""&classeCss&">...</a> "

end if

end if

for i = inicial To final

if cInt(i) = cInt(paginaAtual) then

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, i) &""""&classeCssPgAtual&"><strong>"& i &"</strong></a> "

else

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, i) &""""&classeCss&">"& i &"</a> "

end if

next

if cInt(paginaAtual) <> cInt(totalPagina) then

posAux = left(paginaAtual,intTemp02)

if ((posAux > paginaAtual) or ((paginaAtual <= maximoLink) and (totalPagina > maximoLink))) and totalPagina > final then

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, final + 1) &""""&classeCss&">...</a> "

end if

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, paginaAtual + 1) &""""&classeCss&">"&imagemProximo&"</a> "

strTemp = strtemp & "<a href="""& replace(link, strReplacePagina, totalPagina) &""""&classeCss&">"&imagemUltimo&"</a> "

end if

paginar = strtemp

end if

end Function

END CLASS

 

public function iif(isTrue, TValue, FValue)

if (isTrue) then

iif = TValue

else

iif = FValue

end if

end function

 

'----------- Exemplo de utilização

 

'dim pagina, conexao, rs, sql, i,paginacao, retornoClasse

pagina = request.querystring("pagina")

if len(pagina) = 0 or not isNumeric(pagina) then

pagina = 1

else

if pagina = 0 then

pagina = 1

else

pagina = cInt(pagina)

end if

end if

 

dim sql, rs, i, pagina, retornoClasse, paginacao

'set conexao = Server.CreateObject("adodb.connection")

'conexao.cursorlocation=3

'Conexao.Open "Driver={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=dbase; UID=root; PWD=root;OPTION=35"

sql = "select * from destinatario"

set rs = Server.CreateObject("adodb.recordset")

rs.ActiveConnection = connect

rs.Source = sql

rs.PageSize = LIMIT_PAGE

rs.CursorLocation = 3

rs.CursorType = 3

rs.LockType = 1

rs.open sql

i = 0

rs.AbsolutePage = iif(pagina > rs.pageCount, 1, pagina)

do while ((not(rs.eof)) and (i < LIMIT_PAGE))

i = i + 1

Response.Write(i&"---"&RS(2)&"<BR>")

rs.movenext

loop

 

set paginacao = New clsPaginacao

paginacao.pastaImagem = "imagens"

paginacao.imagemPrimeiro = "setaBackAll.gif"

paginacao.imagemProximo = "setaGo.gif"

paginacao.imagemAnterior = "setaBack.gif"

paginacao.imagemUltimo = "setaGoAll.gif"

paginacao.totalRegistro = rs.recordCount

paginacao.paginaAtual = pagina

paginacao.classeCss = "links"

paginacao.classeCssPgAtual= "paginaAtual"

paginacao.registroPagina = LIMIT_PAGE

retornoClasse = paginacao.paginar

 

'paginacao.pastaImagem = diretorio fisico da pasta que contem as imagens das setas [string]

'paginacao.imagemPrimeiro = imagem da seta referente a primeira página [string]

'paginacao.imagemProximo = imagem da seta referente a próxima página [string]

'paginacao.imagemAnterior = imagem da seta referente a página anterior [string]

'paginacao.imagemUltimo = imagem da seta referente a última página [string]

'paginacao.totalRegistro = total de registros a paginar [integer]

'paginacao.paginaAtual = pagina atual [integer]

'paginacao.link = query string com os parametros desejados. Padrão ?pagina=#pag# Ex.:"paginacao.asp?pagina=#pag#" [string - opcional]

'paginacao.classeCss = nome do estilo CSS dos links da paginação [string - opcional]

'paginacao.classeCssPgAtual = nome do estilo CSS do link da página atual [string - opcional]

'paginacao.registroPagina = valor do máximo de registros por página (o mesmo utilizado no recordset)

'paginacao.strReplacePagina = parametro para o replace das páginas. Padrão #pag# [string - opcional]

'paginacao.paginaInicial = página que deve exibir no primeiro carregamento. Padrão = 1 [integer - opcional]

set paginacao = nothing

 

Response.Write(retornoClasse)

%>

 

<style>

 

 

.links{

text-decoration:none;

font:12px Arial, Helvetica, sans-serif;

color:#333333;

}

 

.paginaAtual{

text-decoration:none;

color:#FF0000;

font:13px Arial, Helvetica, sans-serif;

text-decoration:underline;

}

 

 

</style>

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.