Primero publicaré el código fuente de la clase de paginación y luego publicaré algunos ejemplos para explicar su uso y cómo ampliar sus funciones cuando tenga tiempo.
El código original de la clase es el siguiente:
< %
'=================================================
'XDOWNPAGE versión ASP
'Versión actual: 2.0
'
'
'Versión original 1.00
'Código de zykj2000
'Correo electrónico: [email protected]
'BBS: http://bbs.513soft.net
'
'
'Versión de actualización: 1.5 (asp + oracle)
actualizado por doble
Correo electrónico:
blog: ttp://blog.csdn.net/double/
'Instrucciones de actualización:
'
'
'Versión de actualización: 2.0' (asp + oracle) ---->Versión actual
'Conserva el nombre original: XDOWNPAGE
Actualizado por nieve del norte
'correo electrónico: [email protected]
'blog: http://blog.csdn.net/precipitante
'Instrucciones de actualización:
'1, al consultar datos, solo se consultan los registros contenidos en la página actual, lo que reduce en gran medida la cantidad de transmisión de datos.
'2, si la navegación de la página es normal, no es necesario consultar el número total de registros cada vez, siempre que lo consulte por primera vez y luego lo pase a través de parámetros.
'3, admite el cambio dinámico del tamaño de página
'4, admite clasificación dinámica
'5, este programa solo es compatible con Oracle. Si desea usarlo en sqlserver u otros tipos de bases de datos, modifíquelo usted mismo: Propiedad pública Let GetSQL (str_sql).
'
'
'Para obtener otra información sobre modificadores de programa, verifíquela en el código fuente. ! !
'Este programa se puede utilizar, modificar, copiar, reproducir y citar de forma gratuita. Espero que mi programa pueda aportar comodidad a su trabajo.
'Pero por favor conserve la información anterior, especialmente la información original. Además, si se utiliza con fines comerciales, actualice con el trabajo original y esta versión.
'Contacto para obtener permiso.
'
'
'Características del programa
'Este programa encapsula principalmente la parte de paginación de datos y la parte de visualización de datos es completamente personalizada por el usuario.
'Soporta múltiples parámetros de URL
'
'Instrucciones de uso
'Descripción del parámetro del programa
'PapgeSize define el número de registros en cada página de paginación
'GetRS devuelve el conjunto de registros paginado. Esta propiedad es de sólo lectura.
'GetConn obtiene la conexión a la base de datos
'GetSQL obtiene la declaración de consulta
'totalRecordCount pasa el número total de registros
' descripción del método del programa
'ShowPage muestra la barra de navegación de paginación, el único método público
'ShowPageSizeChange() muestra una lista de tamaños de página modificados
'
'ejemplo:
'
' 'Incluir archivos
'
'Establecer mipágina=nueva xdownpage 'Crear objeto
'mypage.getconn=conn 'Obtener la conexión a la base de datos
' mypage.getsql="seleccione * del pedido de información del producto por id asc"
' mypage.pagesize=5 'Establece los datos de registro de cada página en 5
'mypage.totalRecordCount=rsTotalCount establece el número total de registros
'set rs=mypage.getrs() 'Devolver conjunto de registros
'mypage.GetSubmitForm="frmQuery" 'El formulario enviado de forma predeterminada para paginación, parámetro de página actual
'Response.write(mypage.GetSubmitForm1()) 'Función de envío de paginación de salida
' mypage.showpage() 'Muestra información de paginación. Este método se puede utilizar después de configurar rs=mypage.getrs().
'Llamar a cualquier lugar, se puede llamar varias veces
' do while not rs.eof 'La siguiente operación es la misma que operar un objeto Recordset normal.
'respuesta.escribir rs(0) & "
' " 'Aquí puedes personalizar el método de visualización
'rs.
' bucle
'
'Se agregó un script de envío para guardar el número de página actual
'La función es GetSubmitForm()
'Es necesario enviar un nombre de formulario a la función GetSubmitForm
'Guarde los cuatro parámetros de las variables flag, currentpage, pagesize, rsTotalCount en este formulario enviado
'El ejemplo es el siguiente
'bandera=solicitud("bandera")
'página actual=solicitud("página actual")
'página actual=solicitud("tamaño de página")
'página actual=solicitud("rsTotalCount")
'Agregue las siguientes cuatro entradas al formulario enviado
'<nombre de entrada="bandera" tipo="valor oculto"="< % =bandera% >">
'<nombre de entrada="página actual" tipo="valor oculto"="< % =página actual% >">
'<nombre de entrada="tamaño de página" tipo="valor oculto"="< % =tamaño de página% >">
'<nombre de entrada="rsTotalCount" tipo="valor oculto"="< % =rsTotalCount% >">
'===============================================
Const Btn_First= "<font face=""webdings"">9</font>" 'Define el estilo de visualización del botón en la primera página
Const Btn_Prev="<font face=""webdings"">3</font>" 'Define el estilo de visualización del botón de la página anterior
Const Btn_Next="<font face=""webdings"">4</font>" 'Define el estilo de visualización del botón de la página siguiente
Const Btn_Last="<font face=""webdings"">:</font>" 'Define el estilo de visualización del botón de la última página
Const XD_Align="center" 'Definir la alineación de la información de paginación
Const XD_Width="100%" 'Define el tamaño del cuadro de información de paginación
constante XD_Height="20"
Definición de variable
de clase Xdownpage 'La clase comienza aquí
'
public int_totalPage 'Número total de páginas
public int_curcount 'Número de registros en la página actual
public XD_PageSize 'Tamaño de página
Private int_curpage 'Número de página actual
Private int_totalRecord 'Número total de registros
Private XD_Conn 'Objeto de conexión de base de datos
Private XD_Rs 'Objeto de conjunto de registros
Declaración SQL principal privada XD_SQL
Declaración SQL privada XD_Count_SQL 'para consultar el número total de registros
Str_errors privados
str_URL privada
Privado XD_sURL
Private SubmitForm 'Nombre del formulario de consulta requerido (ocultar nombre del formulario)
'=================================================== = =================
'Propiedad tamaño de página
'Establece el tamaño de paginación de cada página
'=================================================== = =================
Propiedad pública Let PageSize(int_PageSize)
Si es numérico (Int_Pagesize) entonces
si clng(Int_Pagesize)>0 entonces
XD_PageSize=CLng(int_PageSize)
demás
XD_Tamaño de página=10
terminar si
Demás
XD_Tamaño de página=10
Terminar si
Propiedad final
Propiedad pública Obtener tamaño de página
Si XD_PageSize="" o (no (IsNumeric(XD_PageSize))) Entonces
Tamaño de página = 10
Demás
Tamaño de página=XD_Tamaño de página
Terminar si
Propiedad final
'=================================================== = =================
'Propiedad GetRS
'Devuelve el conjunto de registros paginados
'=================================================== = =================
Propiedad pública Obtener GetRs()
Establecer XD_Rs=Server.createobject("adodb.recordset")
'XD_Rs.PageSize=Tamaño de página
XD_Rs.CursorLocation=3
XD_Rs.Abrir XD_SQL,XD_Conn,3,1
int_curcount=XD_Rs.RecordCount
si int_totalRecord="" o no esNumeric(int_totalRecord) entonces int_totalRecord=0 'Normaliza el valor de int_totalRecord
si int_totalRecord=0 y (int_curcount>=PageSize o int_curpage>1) entonces llame a queryRsCount() 'Consulta el número total de registros
si número de error <> 0 entonces
Respuesta.Escribir error.Borrar
terminar si
Establecer GetRs=XD_RS
Propiedad final
'================================================ = ==================
'método queryRSCount
'Consulta el número total de registros
'=================================================== = =================
Subconsulta públicaRsCount()
'El siguiente código se utiliza para calcular el número total de registros.
si XD_Count_SQL<>"" entonces
establecer rs_sqlcount=server.createobject("adodb.recordset")
rs_sqlcount.CursorLocation=3
rs_sqlcount.open XD_Count_SQL,conexión,3,1
si (rs_sqlcount.eof y rs_sqlcount.bof) entonces
int_totalRecord=0
demás
int_totalRecord=rs_sqlcount(0)
int_totalRecord=clng(int_totalRecord)
terminar si
rs_sqlcount.cerrar
establecer rs_sqlcount=nada
terminar si
Fin sub
'================================================= = ==================
'GetConn obtiene la conexión a la base de datos
'
'=================================================== = ================
Propiedad pública Let GetConn(obj_Conn)
Establecer XD_Conn=obj_Conn
Propiedad final
'================================================ = =================
'GetSQL obtiene la declaración de consulta
'
'=================================================== = ================
Propiedad pública Let GetSQL(str_sql)
si (str_sql<>"") entonces
'Basado en la declaración de consulta dada, genere la declaración de consulta final (solo tome el contenido de la página actual): adecuado para la base de datos Oracle
XD_SQL=" seleccione * de (seleccione rownum r_n,temptable.* de ("
XD_SQL=XD_SQL&str_sql
XD_SQL=XD_SQL&" ) temptable ) donde r_n entre " & cstr((int_curpage -1) * XD_PageSize +1) & " y " & cstr(int_curpage * XD_PageSize)
'Declaración de consulta para consultar el número total de registros
XD_Count_SQL="seleccione recuento (*) de ("& str_sql & ")"
terminar si
Propiedad final
'=================================================== = ================
'La propiedad GetSubmitForm establece el formulario para las condiciones de consulta
'
'=================================================== = ===============
Propiedad pública Let GetSubmitForm(frmName)
Enviar formulario=recortar(frmName)
Propiedad final
'================================================ = =================
'El método GetSubmitForm1 genera el script necesario para la navegación de paginación
'
'=================================================== = ================
sub público GetSubmitForm1()
'Función Javascript de navegación de páginas
Respuesta.Escribir " "+vrcrlf
Respuesta.Escribir ("<Lenguaje de script=""javascript"">") +vbcrlf
Respuesta.Escribir "función generalSubmit(i)"+vbcrlf
Respuesta.Escribir " {"+vbcrlf
Respuesta.Escribir " documento."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Respuesta.Escribir "documento."&SubmitForm&".currentpage.value=i;"+vbcrlf
Respuesta.Escribir " "&SubmitForm&".submit();"+vbcrlf
Respuesta.Escribir " }"+vbcrlf
'función javascript para cambiar el tamaño de la página
Response.Write "función changePageSize(ii)"+vbcrlf
Respuesta.Escribir " {"+vbcrlf
Respuesta.Escribir " documento."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Respuesta.Escribir " documento."&SubmitForm&".currentpage.value=1;"+vbcrlf
Respuesta.Escribir " documento."&SubmitForm&".pagesize.value=ii;"+vbcrlf
Respuesta.Escribir " "&SubmitForm&".submit();"+vbcrlf
Respuesta.Escribir " }"+vbcrlf
Respuesta.Escribir ("</Script>")+vbcrlf
Respuesta.Escribir " "+vrcrlf
end sub
'================================================== = ====================
'propiedad totalRecordCount
'Acerca del número total de registros
'
'=================================================== = ==================
Propiedad pública Let totalRecordCount(int_totalRecordCount)
Si es numérico (int_totalRecordCount) entonces
int_totalRecord=CLng(int_totalRecordCount)
Terminar si
Propiedad final
Propiedad pública Obtener totalRecordCount
Si no (int_totalRecord="" o (no (IsNumeric(int_totalRecord)))) Entonces
totalRecordCount=int_totalRecord
Terminar si
Propiedad final
'=================================================== = ==================
'Método GetRecordCount
'Devuelve el número actual de registros
'
'=================================================== = ==================
función pública GetRecordCount()
GetRecordCount=int_totalRecord
función final
'=================================================== = ==================
'Class_Initialize inicialización de clase
'Inicializar el valor de la página actual
'
'=================================================== = ==================
Subclase privada_Inicializar
'=========================
'Establecer valores predeterminados para algunos parámetros
'=========================
' XD_PageSize=10 'Establece el valor predeterminado de paginación en 10
'=========================
'Obtener el valor actual
'=========================
Si Solicitud ("página actual")="" Entonces
int_curpage=1
De lo contrario, si no (IsNumeric (Solicitud ("página actual"))) Entonces
int_curpage=1
ElseIf CInt(Trim(Solicitud("página actual")))<1 Entonces
int_curpage=1
Demás
Int_curpage=CInt(Trim(Solicitud("página actual")))
End If
End Sub
'=============================================== =
'ShowPage crea una barra de navegación de paginación
'Hay página de inicio, página anterior, página siguiente, última página y navegación digital.
'
'=================================================
SubshowPage pública()
tenue str_tmp
XD_sURL = ObtenerUrl()
' int_totalRecord=XD_Rs.RecordCount
Si int_totalRecord<=0 Entonces
str_error=str_error & "El número total de registros es cero, por favor ingrese datos"
Llamar a ShowError()
Terminar si
Si int_totalRecord="" entonces
int_PáginaTotal=1
De lo contrario
'modificar por wls 041215 Para que se muestren las páginas correctas--------------
Si int_totalRecord mod PageSize =0 Entonces
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1) *-1
Demás
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1)*-1+1
Fin si
Fin si
si Int_curpage>int_Totalpage Entonces
int_curpage=int_PáginaTotal
Finalizar si
'=============================================== = ========
'Muestra información de paginación, cada módulo cambia la posición de visualización de acuerdo con sus propios requisitos
'=================================================== = =======
'respuesta.escribir " "
str_tmp=MostrarPrimerPrv
respuesta.escribir str_tmp
str_tmp=mostrarNumBtn
respuesta.escribir str_tmp
str_tmp=MostrarSiguienteÚltimo
respuesta.escribir str_tmp
str_tmp=Mostrar información de página
respuesta.escribir str_tmp
Respuesta.escribir " "
MostrarIr
a Fin Sub
'=================================================
'ShowFirstPrv muestra la página de inicio y la página anterior
'
'
'=================================================
Función privada ShowFirstPrv()
Dim Str_tmp,int_prvpage
Si int_curpage=1 Entonces
str_tmp=Pulsador_Primero&" "&Pulsador_Prev
De lo contrario, si int_curpage=0 entonces
str_tmp=Pulsador_Primero&" "&Pulsador_Prev
demás
int_prvpage=int_curpage-1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('1')"" alt=""Primera página"">" & Btn_First&"</a> <a href="" # "" onclick=""javascript:generalSubmit('"&int_prvpage&"')"" alt=""Página anterior"">" & Btn_Prev&"</a>"
Terminar si
MostrarFirstPrv=str_tmp
Función final
'================================================
'ShowNextÚltima página siguiente, última página
'
'
'=================================================
Función privada MostrarSiguienteÚltimo()
Dim str_tmp,int_Nextpage
Si Int_curpage>=int_totalpage Entonces
str_tmp=Pulsar_Siguiente & " " & Pulsar_Último
Demás
Int_NextPage=int_curpage+1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('"&int_nextpage&"')"" alt=""Nextpage"">" & Btn_Next&"</a> <a href= "" #"" onclick=""javascript:generalSubmit('"&int_totalpage&"')"" alt=""Última página"">" & Btn_Last&"</a>"
Terminar si
MostrarSiguienteÚltimo=str_tmp
Función final
'Función final
'=================================================
'ShowNumBtn navegación numérica modificada
'
'=================================================
Función mostrarNumBtn()
Dim i,str_tmp,end_page,start_page
start_page=1
'añadir por sll 2005.05.20 int_curpage=0
si int_curpage=0 entonces
str_tmp=str_tmp&"0"
demás
si int_curpage>1 entonces
start_page=int_curpage
si (int_curpage<=5) entonces
página_inicio=1
terminar si
si (int_curpage>5) entonces
start_page=int_curpage-2
terminar si
terminar si
página_final=página_inicio+5
si end_page>int_totalpage entonces
end_page=int_totalpage
terminar si
Para i=página_inicio a página_final
strTemp=XD_sURL y CStr(i)
str_tmp=str_tmp & "[<a href=""#"" onclick=""javascript:generalSubmit('"&i&"')"">"&i&"</a>] "
Próximo
terminar si
mostrarNumBtn=str_tmp
Función final
'================================================
'MostrarIr a salto de página
'La página salta automáticamente
'añadir por sll 2005.05.20
'=================================================
Función privada ShowGoto()
'respuesta.escribir int_totalPage
diminti
si int_totalPage<=0 entonces
respuesta.escribir "<seleccionar nombre='goto' deshabilitado>"
Respuesta.Escribir "<option value='0'>0</option>"
respuesta.escribir "</select>"
else
Response.write "<select name='goto' onchange='javascript:generalSubmit(this.value)'>"
para inti=1 a int_totalPage
Response.Write "<option value='"&inti&"'"
si cstr(inti)=cstr(int_curpage) entonces
respuesta.escribir "seleccionado"
terminar si
respuesta.write" >"&inti&"</option>"
próximo
respuesta.escribir "</select>"
terminar si
Función final
'=================================================
'Información de paginación ShowPageInfo
'Modificar según sea necesario
'
'=================================================
Función privada ShowPageInfo()
tenue str_tmp
str_tmp=" [Página:<font color=red>"&int_curpage&"</font>/"&int_totalpage&"] [Total de elementos "&int_totalrecord&"] ["&XD_PageSize&" elementos/página]"
ShowPageInfo=str_tmp
Función final
'=================================================
'ShowPageSizeChange cambia el tamaño de la página
'Modificar según sea necesario
'
'=================================================
sub público ShowPageSizeChange()
tenue str_tmp
str_tmp="Tamaño de página: <select name='sssssPageSize' onchange='changePageSize(this.value)'>"
str_tmp=str_tmp & "<opción"
si XD_PageSize=10 entonces str_tmp =str_tmp & "seleccionado"
str_tmp=str_tmp & "valor='10'>10</option>"
str_tmp=str_tmp & "<opción"
si XD_PageSize=20 entonces str_tmp =str_tmp & "seleccionado"
str_tmp=str_tmp & "valor='20'>20</option>"
str_tmp=str_tmp & "<opción"
si XD_PageSize=50 entonces str_tmp =str_tmp & "seleccionado"
str_tmp=str_tmp & "valor='50'>50</option>"
str_tmp=str_tmp & "<opción"
si XD_PageSize=int_totalRecord entonces str_tmp =str_tmp & "seleccionado"
str_tmp=str_tmp & " valor='" & int_totalRecord & "'>all</option>"
str_tmp=str_tmp & "</select>"
respuesta.Escribir str_tmp
Fin sub
'===============================================
'Función modificada para obtener los parámetros de URL actuales
'Codificación por Redsun
'comentario de Northsnow: no sé dónde usarlo, pero guárdalo
'=================================================
Función privada GetUrl()
Dim ScriptAddress, M_ItemUrl, M_item
ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))&"?" 'Obtener la dirección actual
Si (Request.QueryString <> "") Entonces
M_ItemUrl = ""
Para cada M_item en Request.QueryString
Si InStr("página",M_Item)=0 Entonces
M_ItemUrl = M_ItemUrl & M_Item &"="& Server.URLEncode(Request.QueryString(""&M_Item&"")) & "&"
Terminar si
Próximo
ScriptAddress = ScriptAddress & M_ItemUrl 'Obtiene la dirección con parámetros
Terminar si
ObtenerUrl = ScriptAddress '& "página="
Función final
'=================================================
'Establece el evento Terminar.
'=================================================
Subclase privada_Terminar
'XD_RS.cerrar
'Establecer XD_RS=nada
Subtítulo final
'=================================================
'Mostrar mensaje de error
'=================================================
Sub ShowError privado()
Si str_Error <> "" Entonces
Respuesta.Escribir("" & SW_Error & "")
Respuesta.Fin
Terminar si
Clase
final subfinal
%>