Postarei primeiro o código-fonte da classe de paginação e depois postarei alguns exemplos para explicar seu uso e como estender suas funções quando tiver tempo.
O código original da classe é o seguinte:
<%
'=============================================
'XDOWNPAGE versão ASP
'Versão atual: 2.0
'
'
'Versão original 1.00
'Código por zykj2000
'E-mail: [email protected]
'BBS: http://bbs.513soft.net
'
'
'Versão de atualização: 1.5 (asp + oracle)
atualizado por duplo
E-mail:
blog: ttp://blog.csdn.net/double/
'Instruções de atualização:
'
'
'Versão de atualização: 2.0' (asp + oracle) ---->Versão atual
'Mantenha o nome original: XDOWNPAGE
Atualizado por Northsnow
'e-mail: [email protected]
'blog: http://blog.csdn.net/precipitant
'Instruções de atualização:
'1, ao consultar dados, apenas os registros contidos na página atual são consultados, o que reduz bastante a quantidade de transmissão de dados.
'2, se a navegação da página for normal, você não precisa consultar o número total de registros todas as vezes, desde que você consulte pela primeira vez e depois passe pelos parâmetros.
'3, suporta alteração dinâmica do tamanho da página
'4, suporta classificação dinâmica
'5, este programa suporta apenas oracle, se você quiser usá-lo em sqlserver ou outros tipos de bancos de dados, modifique-o você mesmo: Propriedade pública Let GetSQL (str_sql).
'
'
'Para outras informações sobre modificadores de programa, verifique no código-fonte! ! !
'Este programa pode ser usado, modificado, copiado, reproduzido e citado gratuitamente. Espero que meu programa possa trazer comodidade ao seu trabalho.
'Mas por favor guarde as informações acima, especialmente as informações originais. Além disso, se for usado para fins comerciais, atualize com o trabalho original e esta versão.
'Contato para permissão.
'
'
'Recursos do programa
'Este programa encapsula principalmente a parte de paginação de dados, e a parte de exibição de dados é totalmente personalizada pelo usuário.
'Suporta vários parâmetros de URL
'
'Instruções de uso
'Descrição dos parâmetros do programa
'PapgeSize define o número de registros em cada página de paginação
'GetRS retorna o Recordset paginado. Esta propriedade é somente leitura.
'GetConn obtém a conexão com o banco de dados
'GetSQL obtém a instrução de consulta
'totalRecordCount passa o número total de registros
' descrição do método do programa
'ShowPage exibe a barra de navegação de paginação, o único método público
'ShowPageSizeChange() exibe uma lista de tamanhos de página alterados
'
'exemplo:
'
' 'Incluir arquivos
'
'Set mypage=new xdownpage 'Criar objeto
'mypage.getconn=conn 'Obtém a conexão do banco de dados
' mypage.getsql = "selecione * no pedido de informações do produto por id asc"
' mypage.pagesize=5 'Defina os dados de registro de cada página para 5
'mypage.totalRecordCount=rsTotalCount define o número total de registros
'set rs=mypage.getrs() 'Retorna conjunto de registros
'mypage.GetSubmitForm="frmQuery" 'O formulário enviado por padrão para paginação, parâmetro currentpage
'Response.write(mypage.GetSubmitForm1()) 'Função de envio de paginação de saída
' mypage.showpage() 'Exibe informações de paginação Este método pode ser usado após set rs=mypage.getrs().
'Ligue para qualquer lugar, pode ser chamado várias vezes
' do while not r.eof 'A próxima operação é igual à operação de um objeto Recordset comum.
' resposta.write rs (0) & "
' " 'Aqui você pode personalizar o método de exibição
'rs. mover em seguida
' laço
'
'Adicionado script de envio para salvar o número da página atual
'A função é GetSubmitForm()
'É necessário enviar um nome de formulário para a função GetSubmitForm
'Salve os quatro parâmetros das variáveis flag, currentpage, pagesize, rsTotalCount neste formulário enviado
'O exemplo é o seguinte
'sinalizador=solicitação("sinalizador")
'página atual=solicitação("página atual")
'página atual=request("tamanho da página")
'página atual=solicitação("rsTotalCount")
'Adicione as seguintes quatro entradas ao formulário enviado
'<input name="flag" type="hidden" value="< % =flag% >">
'<input name="currentpage" type="hidden" value="< % =currentpage% >">
'<input name="pagesize" type="hidden" value="< % =pagesize% >">
'<input name="rsTotalCount" type="hidden" value="< % =rsTotalCount% >">
'============================================
Const Btn_First= "<font face=""webdings"">9</font>" 'Define o estilo de exibição do botão na primeira página
Const Btn_Prev="<font face=""webdings"">3</font>" 'Define o estilo de exibição do botão da página anterior
Const Btn_Next="<font face=""webdings"">4</font>" 'Define o estilo de exibição do botão da próxima página
Const Btn_Last="<font face=""webdings"">:</font>" 'Define o estilo de exibição do botão da última página
Const XD_Align="center" 'Define o alinhamento das informações de paginação
Const XD_Width="100%" 'Define o tamanho da caixa de informações de paginação
Const XD_Height="20"
Classe Xdownpage 'A aula começa aqui
' definição de variável
public int_totalPage 'Número total de páginas
public int_curcount 'Número de registros na página atual
public XD_PageSize 'Tamanho da página
Private int_curpage 'Número da página atual
Private int_totalRecord 'Número total de registros
Private XD_Conn 'Objeto de conexão de banco de dados
Private XD_Rs 'Objeto de conjunto de registros
Instrução sql principal privada XD_SQL
Instrução SQL privada XD_Count_SQL para consultar o número total de registros
Str_errors privados
Str_URL privado
XD_sURL privado
Private SubmitForm 'Nome do formulário de consulta obrigatório (ocultar nome do formulário)
'================================================ =================
'Propriedade PageSize
'Define o tamanho de paginação de cada página
'================================================ =================
Propriedade pública Let PageSize(int_PageSize)
Se IsNumeric(Int_Pagesize) Então
se clng(Int_Pagesize)>0 então
XD_PageSize=CLng(int_PageSize)
outro
XD_PageSize=10
terminar se
Outro
XD_PageSize=10
Terminar se
Propriedade final
Propriedade pública Obter PageSize
Se XD_PageSize="" ou (not(IsNumeric(XD_PageSize))) Então
Tamanho da página = 10
Outro
PageSize=XD_PageSize
Terminar se
Fim da propriedade
'================================================ =================
'Propriedade GetRS
'Retorna o recordset paginado
'================================================ =================
Propriedade pública GetRs()
Definir XD_Rs=Server.createobject("adodb.recordset")
'XD_Rs.PageSize=Tamanho da página
XD_Rs.CursorLocation=3
XD_Rs.Abrir XD_SQL,XD_Conn,3,1
int_curcount=XD_Rs.RecordCount
if int_totalRecord="" ou não isNumeric(int_totalRecord) then int_totalRecord=0 'Normaliza o valor de int_totalRecord
se int_totalRecord=0 e (int_curcount>=PageSize ou int_curpage>1) então chame queryRsCount() 'Consulte o número total de registros
se err.número<>0 então
Resposta.Escrever err.Limpar
terminar se
Definir GetRs=XD_RS
Propriedade final
'============================================= = =================
'método queryRSCount
'Consulta o número total de registros
'================================================ =================
Subconsulta públicaRsCount()
'O código a seguir é usado para calcular o número total de registros
se XD_Count_SQL<>"" então
definir rs_sqlcount=server.createobject("adodb.recordset")
rs_sqlcount.CursorLocation=3
rs_sqlcount.open XD_Count_SQL,conn,3,1
se (rs_sqlcount.eof e rs_sqlcount.bof) então
int_totalRecord=0
outro
int_totalRecord=rs_sqlcount(0)
int_totalRecord=clng(int_totalRecord)
terminar se
rs_sqlcount.fechar
definir rs_sqlcount = nada
terminar se
Fim do sub
'============================================== ==================
'GetConn obtém a conexão com o banco de dados
'
'================================================ ================
Propriedade pública Let GetConn(obj_Conn)
Definir XD_Conn=obj_Conn
Propriedade final
'============================================= = ================
'GetSQL obtém a instrução de consulta
'
'================================================ ================
Propriedade pública Let GetSQL(str_sql)
se (str_sql<>"") então
'Com base na instrução de consulta fornecida, gere a instrução de consulta final (pegue apenas o conteúdo da página atual): adequado para banco de dados Oracle
XD_SQL=" selecione * de (selecione rownum r_n,temptable.* de ("
XD_SQL=XD_SQL&str_sql
XD_SQL=XD_SQL&" ) tentador ) onde r_n entre " & cstr((int_curpage -1) * XD_PageSize +1) & " e " & cstr(int_curpage * XD_PageSize)
'Instrução de consulta para consultar o número total de registros
XD_Count_SQL="selecione contagem(*) de ("& str_sql & ")"
terminar se
Fim da propriedade
'================================================ ================
'A propriedade GetSubmitForm define o formulário para condições de consulta
'
'================================================ = ===============
Propriedade Pública Let GetSubmitForm(frmName)
EnviarFormulário=trim(frmName)
Propriedade final
'============================================= = ================
'O método GetSubmitForm1 gera o script necessário para navegação de paginação
'
'================================================ ================
sub público GetSubmitForm1()
'Função Javascript de navegação de página
Resposta.Write " "+vrcrlf
Response.Write ("<Linguagem de script=""javascript"">") +vbcrlf
Response.Write "função geralSubmit(i)"+vbcrlf
Resposta.Write "{"+vbcrlf
Response.Write " documento."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Response.Write " documento."&SubmitForm&".currentpage.value=i;"+vbcrlf
Response.Write " "&SubmitForm&".submit();"+vbcrlf
Resposta.Write " }"+vbcrlf
'função javascript para alterar o tamanho da página
Response.Write "função changePageSize(ii)"+vbcrlf
Resposta.Write "{"+vbcrlf
Response.Write " documento."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Response.Write " documento."&SubmitForm&".currentpage.value=1;"+vbcrlf
Response.Write " documento."&SubmitForm&".pagesize.value=ii;"+vbcrlf
Response.Write " "&SubmitForm&".submit();"+vbcrlf
Response.Write " }"+vbcrlf
Response.Write ("</Script>")+vbcrlf
Resposta.Write " "+vrcrlf
end sub
'=============================================== ====================
'propriedade totalRecordCount
'Sobre o número total de registros
'
'================================================ = =================
Propriedade Pública Let totalRecordCount(int_totalRecordCount)
Se IsNumeric(int_totalRecordCount) Então
int_totalRecord=CLng(int_totalRecordCount)
Terminar se
End Property
Propriedade pública Obter totalRecordCount
Se não(int_totalRecord="" ou (not(IsNumeric(int_totalRecord)))) Então
totalRecordCount=int_totalRecord
Terminar se
Fim da propriedade
'================================================ ==================
'Método GetRecordCount
'Retorna o número atual de registros
'
'================================================ ==================
função pública GetRecordCount()
GetRecordCount=int_totalRecord
função final
'================================================ ==================
'Class_Initialize inicialização da classe
'Inicializa o valor da página atual
'
'================================================ ==================
Subclasse Privada_Initialize
'========================
'Define valores padrão para alguns parâmetros
'========================
' XD_PageSize=10 'Defina o valor padrão da paginação como 10
'========================
'Obtém o valor atual
'========================
If Request("página atual")="" Então
int_curpage=1
ElseIf not(IsNumeric(Request("página atual"))) Then
int_curpage=1
ElseIf CInt(Trim(Request("página atual")))<1 Then
int_curpage=1
Outro
Int_curpage=CInt(Trim(Request("página atual")))
End If
End Sub
'============================================ =
'ShowPage cria uma barra de navegação de paginação
'Existem página inicial, página anterior, próxima página, última página e navegação digital
'
'=============================================
Sub ShowPage pública()
Escurecer str_tmp
XD_sURL = GetUrl()
'int_totalRecord=XD_Rs.RecordCount
Se int_totalRecord<=0 Então
str_error=str_error & "O número total de registros é zero, insira os dados"
Chame ShowError()
Terminar se
Se int_totalRecord="" então
int_TotalPage=1
Else
'modificar por wls 041215 Para a exibição correta das páginas--------------
Se int_totalRecord mod PageSize = 0 Então
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1) *-1
Outro
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1)*-1+1
Fim se
fim se
se Int_curpage>int_Totalpage então
int_curpage=int_TotalPage
Fim se
'============================================= = ========
'Exibir informações de paginação, cada módulo altera a posição de exibição de acordo com seus próprios requisitos
'================================================ ========
'resposta.write " "
str_tmp=MostraPrimeiroPrv
resposta.write str_tmp
str_tmp=showNumBtn
resposta.write str_tmp
str_tmp=MostrarPróximoÚltimo
resposta.write str_tmp
str_tmp=MostrarInfoPágina
resposta.write str_tmp
Response.write " "
MostrarGoto
End Sub
'=============================================
'ShowFirstPrv exibe a página inicial e a página anterior
'
'
'=============================================
Função privada ShowFirstPrv()
Dim Str_tmp,int_prvpage
Se int_curpage=1 Então
str_tmp=Btn_First&" "&Btn_Prev
Caso contrário, int_curpage=0 então
str_tmp=Btn_First&" "&Btn_Prev
outro
int_prvpage=int_curpage-1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('1')"" alt=""Primeira página"">" & Btn_First&"</a> <a href="" # "" onclick=""javascript:generalSubmit('"&int_prvpage&"')"" alt=""Página anterior"">" & Btn_Prev&"</a>"
Terminar se
ShowFirstPrv=str_tmp
Função final
'=============================================
'ShowNextLast próxima página, última página
'
'
'=============================================
Função privada ShowNextLast()
Dim str_tmp,int_Nextpage
If Int_curpage>=int_totalpage Então
str_tmp=Btn_Next & " " & Btn_Last
Outro
Int_NextPage=int_curpage+1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('"&int_nextpage&"')"" alt=""Próxima página"">" & Btn_Next&"</a> <a href= "" #"" onclick=""javascript:generalSubmit('"&int_totalpage&"')"" alt=""Última página"">" & Btn_Last&"</a>"
Terminar se
ShowNextLast=str_tmp
Função final
'Função final
'=============================================
'ShowNumBtn navegação numérica modificada
'
'=============================================
Função showNumBtn()
Escurecer i,str_tmp,end_page,start_page
start_page=1
'adicionar por sll 2005.05.20 int_curpage=0
se int_curpage=0 então
str_tmp=str_tmp&"0"
outro
se int_curpage>1 então
start_page=int_curpage
se (int_curpage<=5) então
página_inicial=1
terminar se
se (int_curpage>5) então
start_page=int_curpage-2
terminar se
terminar se
end_page=start_page+5
se end_page>int_totalpage então
end_page=int_totalpage
terminar se
Para i=start_page até end_page
strTemp=XD_sURL & CStr(i)
str_tmp=str_tmp & "[<a href=""#"" onclick=""javascript:generalSubmit('"&i&"')"">"&i&"</a>] "
Próximo
terminar se
showNumBtn=str_tmp
Função final
'=============================================
'Mostrar salto de página Ir para
'A página salta automaticamente
'adicionar até sll 2005.05.20
'=============================================
Função privada ShowGoto()
'response.write int_totalPage
diminti
se int_totalPage<=0 then
response.write "<select name='goto' desativado>"
Response.Write "<option value='0'>0</option>"
resposta.write "</select>"
else
response.write "<select name='goto' onchange='javascript:generalSubmit(this.value)'>"
para inti=1 para int_totalPage
Response.Write "<option value='"&inti&"'"
se cstr(inti)=cstr(int_curpage) então
resposta.write "selecionado"
terminar se
resposta.write" >"&inti&"</option>"
próximo
resposta.write "</select>"
terminar se
Função final
'=============================================
'ShowPageInfo informações de paginação
'Modifique conforme necessário
'
'=============================================
Função privada ShowPageInfo()
Escurecer str_tmp
str_tmp=" [Página:<font color=red>"&int_curpage&"</font>/"&int_totalpage&"] [Total "&int_totalrecord&" itens] ["&XD_PageSize&" itens/página]"
ShowPageInfo=str_tmp
Função final
'=============================================
'ShowPageSizeChange altera o tamanho da página
'Modifique conforme necessário
'
'=============================================
sub público ShowPageSizeChange()
Escurecer str_tmp
str_tmp="Tamanho da página: <select name='sssssPageSize' onchange='changePageSize(this.value)'>"
str_tmp=str_tmp & "<opção"
se XD_PageSize=10 então str_tmp =str_tmp & "selecionado"
str_tmp=str_tmp & "valor='10'>10</option>"
str_tmp=str_tmp & "<opção"
se XD_PageSize=20 então str_tmp =str_tmp & "selecionado"
str_tmp=str_tmp & "valor='20'>20</option>"
str_tmp=str_tmp & "<opção"
se XD_PageSize=50 então str_tmp =str_tmp & "selecionado"
str_tmp=str_tmp & "valor='50'>50</option>"
str_tmp=str_tmp & "<opção"
se XD_PageSize=int_totalRecord então str_tmp =str_tmp & "selecionado"
str_tmp=str_tmp & "value='" & int_totalRecord & "'>todos</option>"
str_tmp=str_tmp & "</select>"
resposta.Write str_tmp
Fim do sub
'=============================================
'Função modificada para obter os parâmetros atuais da URL
'Codificação por Redsun
'comentário northsnow: não sei onde usá-lo, mas guarde-o
'=============================================
Função privada GetUrl()
Dim ScriptAddress, M_ItemUrl, M_item
ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))&"?" 'Obter o endereço atual
Se (Request.QueryString <> "") Então
M_ItemUrl = ""
Para cada M_item em Request.QueryString
Se InStr("página",M_Item)=0 Então
M_ItemUrl = M_ItemUrl & M_Item &"="& Server.URLEncode(Request.QueryString(""&M_Item&"")) & "&"
Terminar se
Próximo
ScriptAddress = ScriptAddress & M_ItemUrl 'Obtém o endereço com parâmetros
Terminar se
GetUrl=ScriptAddress '& "página="
Função final
'=============================================
'Definir o evento Terminar.
'=============================================
Subclasse Privada_Terminate
'XD_RS.fechar
'Definir XD_RS=nada
Finalizar sub
'=============================================
'Mensagem de erro ShowError
'=============================================
Sub ShowError privado()
Se str_Error <> "" Então
Response.Write("" & SW_Error & "")
Resposta.Fim
Terminar se
Classe
final subfinal
%>