Este artículo introduce principalmente siete métodos para implementar la pantalla de paginación en ASP.
En el sistema de programación ASP de Microsoft, el establecimiento de objetos ADO hace que el acceso a las bases de datos desde las páginas web sea una tarea fácil, especialmente el objeto ADO RecordSet hace que sea más conveniente y libre de mostrar la salida de los datos de control. En Visual Interdev6.0 (en adelante, denominado VI6.0), debido a la introducción de modelos de objetos como el modelo de objeto de script (en adelante, denominado SOM), control de tiempo de diseño (en adelante DTC) y entorno de datos Modelo de objetos (en adelante denominado Deom), haga que las páginas web sean más convenientes para acceder a la base de datos.
Debido al tema, con respecto a las conexiones de la base de datos, lo siguiente solo da código y breves comentarios, y se centra en cómo usar objetos de registro (o controles) para implementar la visualización de la paginación de los registros de datos. Según mi comprensión, la clave para la pantalla de paginación es dominar las propiedades y métodos del objeto de registro de ADO o DTC (control de tiempo de diseño).
Estas siete armas que se muestran en las páginas se resumen en cuatro categorías: las primeras y la segunda que las llamo temporalmente el método ASP puro.
Este es también el método más utilizado en los sitios web de ASP domésticos. La implementación de estos dos métodos es el más fácil de entender, se utiliza el concepto de objeto menor y los requisitos mínimos para el entorno de desarrollo (solo bloc de notas). Se puede decir que la esencia de estos dos métodos sigue siendo la idea de programación de CGI, que solo está introduciendo objetos ADO en el programa.
Los métodos DHTML cuarto y quinto nombraron temporalmente SOM.
Estos dos métodos requieren el uso del modelo de objeto de script de Microsoft (modelo de objeto de script) y las nuevas características de la base de datos de los objetos de tabla en DHTML en VI6.0 (muchos libros y artículos solo introducen las características CSS de DHTML la aplicación en diseño de estilo Ignora la introducción de sus características de enlace de datos y realiza la facturación de la página en el lado del cliente. Sin embargo, requiere que el navegador del usuario admita DHTML, como: Microsoft Internet Explorer 4.0 y superior.
El sexto método se llama temporalmente el método SOM del lado del servidor.
Requiere desarrollo en el entorno VI6.0, que utiliza varios controles DTC en el modelo de objeto de script propuesto por Microsoft: RecordSet, PageObject, Grid, etc. para implementar el control de la página en el lado del servidor (Cliente). Este es un método de programación emocionante y nuevo que trata las páginas web como objetos (este modelo de objeto es diferente del modelo de objeto DOM tradicional: DOM: DOM solo puede controlar al cliente, mientras que SOM puede controlar el lado del servidor y el lado del cliente ), que realmente implementa la programación orientada a objetos de las páginas web. Pero desafortunadamente, tal vez mi habilidad personal es limitada, y personalmente creo que esta tecnología aún no es muy madura.
El séptimo método se llama temporalmente el método DEOM.
También utiliza el modelo de objeto de entorno de datos establecido en VI6.0 para crear objetos de registro. Este también es un método nuevo relativamente raro en la programación web.
Todos los códigos de origen mencionados más tarde se pueden copiar y usar directamente.
Antes de comenzar a introducir varios métodos de paginación en detalle, creemos una base de datos: use el acceso en Office97 para crear un empleado.mdb, que crea una tabla EMP y establece solo tres campos: EMP ID, apellido y primer nombre. ¿Por qué es simple?
El primer método para sustituir los parámetros directamente
Este método es crear manualmente un objeto de conjunto de registros y usar sus propiedades PageSize (especifique el número de registros que se muestran por página), PageCount (número de página total) y las propiedades de AbsolutEpage (número de página actual) para controlar la salida de la página. La página de página utiliza el método de los parámetros de numeración de página directamente para controlar la facturación de la página. El nombre de la página web es emp1.asp. El código fuente es el siguiente:
- <%// Establecer una conexión con la base de datos de Employee.MDB.
- Setconn = server.createObject (ADODB.Connection)
- conn.opEdriver = {Microsoft AccessDriver (*. Mdb)}; dbq = empleado.mdb
- // Cree una instancia del objeto de registro de la tabla EMP.
- Setrs = server.createObject (ADODB.Recordset)
- Rs.openemp, Conn, 3
- PageSize = 10 // El atributo de páginas especifica el número de registros que se mostrarán en cada página.
- Page = Clng (request (Page)) 'Tipo de cadena convertido a tipo largo
- Ifpage < 1thenpage = 1
- Ifpage> rs.pageCountThenPage = rs.pageCount
- Ifpage <> 1
- Response.Write < Ahref = emp1.asp? Page = 1 > Page1 </a>
- Response.Write < Ahref = emp1.asp? Page = & (Page-1) & > Página anterior </a>
- Endif
- Ifpage <> rs.pagecountthen
- Response.write < ahref = emp1.asp? Page = & (página+1) y > Página siguiente </a>
- Response.Write < Ahref = emp1.asp? Page = & rs.pageCount & > > > </a>
- Endif
- Response.WRITE Número de página: & Page &/& rs.pagecount & </Font >
- // Pantalla de cada página
- // Mostrar el encabezado
- Respuesta. Write < Center >< TableBorder = 1 >
- Respuesta
- Respuesta
- Respuesta
- // Cicle la visualización de cada registro
- rs.absolutePage = página // Asignar el número de página al atributo AbsoluTepage para conocer el primer número de registro de la página actual
- Foripage = 1Tors.Pagesize //
- Respuesta
- Respuesta
- Respuesta
- Rs.Movenext
- Ifrs.eoftthenexitfor
- Próximo
- Respuesta. Escribe </Tabla ></Centro >%>
El segundo tipo: método de parámetro de transferencia de formulario
Este método es el mismo que el primero cuando se crea un objeto de conjunto de registros, excepto que cuando la página gira el control, utiliza una instrucción de caso para lograr el cambio de página. El nombre de la página web es: Emp2.asp. Este método tiene una desventaja en la lógica de programación: girará automáticamente la página después de presionar la página anterior o el botón de página siguiente y luego presionar el botón de actualización en el navegador. El código fuente es el siguiente:
- ifpagenum = thenpagenum = 1 // show desde la primera página
- // Crear conexión de base de datos e instancia de objeto de registro rs.
- Igual que el primer método, omitido aquí.
- Rs.pagesize = 10'Set El número de registros que se muestran en una página a 10
- // Confirma la acción de turno de la página
- SelectCaserequest (NAV)
- Caso
- sesión (pageno) = 1
- caseFirst'Firstrecord
- sesión (pageno) = 1
- Caseprev'PreviousRecord
- ifsession (pageno)> 1
- Session (Pagenum) = Session (Pagenum) -1
- Endif
- Casenext'nextrecord
- ifsession (pageno) < rs.pagecountthen
- Session (Pagenum) = Session (Pagenum) +1
- Endif
- Caselast'Lastrecord
- sesión (pageno) = rs.pageCount
- EndSelectar
- Rs.AbsolutePage = CLNG (Session (Pagenum)) // Determinar el primer número de registro de la página actual
- // Mostrar la página actual
- Igual que el primer método, omíelo aquí.
- // Configuración del botón de giro de la página de Nav
- < formMethod = getAction = emp2.asp >
- < InputType = SubmitName = NavValue = Home>
- < InputType = SubmitValue = Nombre de página anterior = Nav >
- < InputType = SubbitValue = Nombre de página siguiente = Nav >
- < InputType = SubmitValue = Last Page Name = Nav ></Form >
El tercer tipo: use el control de la cuadrícula para diseñar la paginación
De todos los métodos, este método es el más fácil. Solo necesita arrastrar el control de registro y el control de la red en DTC a la página web ASP. Además, también puede elegir si controlar la facturación de la página en la plataforma del servidor o en la plataforma del cliente. La desventaja es que debe mostrarlo en el formato dado por él, y no puede controlar el formato de visualización de la tabla usted mismo.
El método es el siguiente:
Construya un proyecto emp.vip en VI6.0. Luego agregue una página web ASP en el proyecto: emp3.asp.
Paso 1: Seleccione Agregar datos Connect ... en la barra de menú VI6.0 y siga las indicaciones de navegación de la herramienta de desarrollo, y puede establecer fácilmente una conexión con la base de datos MDB Employee.MDB. Arrastre un control de registro desde la barra de herramientas DTC a la página web y establezca sus propiedades. Específico como se muestra en la imagen:
Cuando arrastre el control a la página web, VI6.0 le indicará automáticamente si usa el modelo de objeto de secuencias de comandos y presiona SÍ.
Paso 3: Arrastre un control de cuadrícula desde la barra de herramientas DTC en la página web, luego haga clic con el botón derecho para establecer sus propiedades, como: seleccione el nombre de control de registro creado en el segundo paso, seleccione los campos en la tabla EMP y cada página Cuántos registros se muestran y el formato de visualización, etc. Es muy simple y conveniente, solo siga las indicaciones de navegación.
El cuarto tipo: DHTML Método uno.
Los registros de datos se muestran en una tabla HTML. Utiliza las características de enlace de datos de las tablas en DHTML para controlar la visualización de registros de paginación. La desventaja es que el método de giro de su página se limitará a un método específico: solo la página anterior y la página siguiente, pero no la página de inicio y la última página. Dado que se controla en el lado del cliente, este y el quinto método son los más rápidos, pero desafortunadamente solo se puede usar en navegadores que admiten DHTML.
En dhtml,
La propiedad DataSRC permite que la tabla esté vinculada a una fuente de datos, y la otra propiedad DataPageSize especifica el número de registros que se muestran en una página a la vez.
Veamos el siguiente ejemplo:
Paso 1: Arrastre el control del conjunto de registros a la página web recientemente creada EMP4.HTM y establezca sus propiedades.
Paso 2: Ingrese el siguiente código:
- < tableID = TABLE1DATASRC =#RecordSet1_rdsDatapagesize = 5 > // Suponiendo que el nombre de control de registro de Registro se registra antes. Se muestran 5 registros por página.
- < thead >
- < thalign = Leftwidth = 150 > Empid </th > // encabezado de la tabla de salida
- < thalign = Leftwidth = 200 > LastName </th >
- < Thalign = LeftWidth = 200 > FirstName </th >
- </thead >
- < TR >
- < td >< divdatafld = empid ></div ></td > // contenido de la tabla de salida
- < td >< divdatafld = LastName ></div ></td >
- < td >< divdatafld = firstName ></div ></td >
- </tr >
- </tabla >
Paso 3: Luego, agregue un par de controles del botón DTCS para hacer la navegación de la página, uno llamado BTNPrevious (página anterior) y el otro llamado BTNNEXT (página siguiente). Sus guiones correspondientes son los siguientes:
- < ScriptLanguage = VBScript >
- Functtnprevious_onclick ()
- Tabla1.previousPage ()
- Función final
- Functtnnext_onclick ()
- Tabla1.nextPage ()
- Función final
- </script >
Quinto tipo: DHTML Método dos
Este método es una perfección para el cuarto método. El método de secuencia de comandos manual nos permite hacer la página de inicio y la última página, girar los botones de navegación, y determinar la ubicación de cada registro (número de registro). Debido a la longitud, solo presentaré un ejemplo específico a continuación y daré una breve explicación. Para otras propiedades y métodos de controles DHTML y registros, consulte los libros relevantes por usted mismo. Cabe señalar aquí que el control del conjunto de registros es algo diferente del objeto ADO RecordSet introducido en el primer y segundo métodos: el control del conjunto de registros no proporciona directamente propiedades como PageSize y PageCount, y debe calcularse utilizando el método introducido a continuación.
Paso 1: arrastre el control de registro a la página web recientemente creada Emp5.htm, con el nombre de registro1, y establece sus propiedades.
Paso 2: Defina tres variables globales y escriba el script OnDatasetComplete de RecordSet1.
- DimgCurrentPageNumber // Número de página actual
- DimgmaxpageNumber // número máximo de páginas
- DimgrecordSperPage // Número de registros que se muestran por página
- GrecordSperPage = 5 // Establezca el número de registros que se muestran por página a 5 registros.
- FunctionRecordSet1_ondataSetComplete ()
- TotalRecordCount = RecordSet1.getCount () // Número total de registros
- gmaxPageNumber = int (TotalRecordCount/GrecordSperPage) // Obtenga el número máximo de páginas
- If (TotalRecordCountModgrecordSperPage) > 0Then
- gmaxpageNumber = gmaxPageNumber+1
- Endif
- Función final
Paso 3: Cree una página Botón de navegación de giro.
- Functtnfirst_onclick () 'Flip a la página de inicio
- gcurrentPageNumber = 1
- DisplayData ()
- Función final
- Functtnprevious_onclick () 'voltea a la página anterior
- ifgCurrentPageNumber> 1
- gcurrentPageNumber = gcurrentPageNumber-1
- DisplayData ()
- Endif
- Función final
- Functtnnext_onclick () 'voltea a la página siguiente
- ifgcurrentPageNumber < gmaxpageNTERTHEN
- gcurrentPageNumber = gcurrentPageNumber+1
- DisplayData ()
- Endif
- Función final
- Functtnlast_onclick () 'voltee a la última página
- gcurrentPageNumber = gmaxpagenumber
- DisplayData ()
- Función final
Paso 4: Escriba una función que muestra cada página. Se utilizan muchas propiedades y métodos DHTML, consulte los libros relevantes usted mismo.
- Subdisplaydata ()
- Startrecord = ((gcurrentPageNumber-1)*GrecordSperPage)+1 // Calcule el número de registros que se muestran al comienzo de cada página (posición, qué elemento)
- ROWCTR = 1
- lblpagenumber.innerhtml = gcurrentpagenumber &/& gmaxpagenumber
- ForRecordPtr = Startrecordto (Startrecord+GrecordSperPage-1) // Ciclismo para mostrar cada registro en una página
- IfRecordPtr > RecordSet1.getCount () entonces // Mostrar tabla vacía
- Tabla1.rows (RowCtr) .Cells (0) .innerhtml = < P ></P >
- Tabla 1.rows (RowCtr) .Cells (1) .innerhtml = < P ></P >
- Tabla 1.rows (RowCTR) .Cells (2) .innerhtml = < P ></P >
- Tabla 1.rows (RowCTR) .Cells (3) .innerhtml = < P ></P >
- Más // especificar cada página
- RecordSet1.MoveAbsolute (RecordPtr) // Mueve el puntero de registro.
- Empid = RecordSet1.fields.getValue (Empid)
- Emplname = RecordSet1.Fields.GetValue (FirstName)
- empfname = RecordSet1.Fields.getValue (LastName)
- Tabla1.Rows (RowCtr) .Cells (0) .inntext = RecordPtr'Counter
- Tabla1.rows (RowCTR) .Cells (1) .inntext = Empid
- Tabla1.Rows (RowCtr) .Cells (2) .inntext = Emplname
- Tabla1.Rows (RowCtr) .Cells (3) .inntext = empfname
- Endif
- RowCTR = ROWCTR+1
- Próximo
- Endsub
Además, también necesitamos escribir el siguiente script en el evento de encendido del objeto de ventana:
- FORROWCTR = 1ToGrecordSperPage
- Tabla1.inserTrow (RowCTR) 'Inserte una nueva columna
- ForcellCTR = 0TO3
- Tabla1.rows (RowCTR) .insertCell ()
- Próximo
- Próximo
El sexto método: facturación de la página de control del lado del servidor.
Si paginamos los datos en el servidor y luego los enviamos al cliente, no habrá ningún problema de que el navegador no admite DHTML. Sin embargo, el uso del método del lado del servidor nos hace que tengan que regenerar el control del conjunto de registros cada vez que giramos la página, por lo que la velocidad es definitivamente más lenta que usar el método DHTML. Pero si el servidor es lo suficientemente rápido, la lentitud del cliente no se dará cuenta.
En el siguiente ejemplo, presentaré un nuevo DTC Control: PageObject. Este control hace que la página web especificada sea un objeto, y las subrutinas y funciones organizadas por el usuario en el script del servidor de la página web pueden considerarse como métodos del objeto de la página web. Proporciona un método avanzado para administrar la información de estado: los objetos web tienen algunas propiedades (variables) que los usuarios pueden definir la vida útil de estas propiedades. Debido a las características anteriores, hace que sea muy conveniente para nosotros compilar scripts de cambio de página.
Pero la desventaja de este método es: cuando presiona la página anterior o el botón de página siguiente y luego presiona el botón de actualización en el navegador, la página web cambiará automáticamente las páginas. Además, si presiona el botón Fallback en el navegador y luego presione el botón de giro de la página, puede darle la vuelta al azar. Todo esto es causado por las propiedades del objeto web (variables globales).
Paso 1: Arrastre el control de registro a la página web recientemente creada Emp6.asp, con el nombre de registro1, y establece sus propiedades.
Paso 2: Arrastre el control de PageObject a la página web y asígnele el nombre Emplist. Luego haga clic con el botón derecho en este control para abrir la página de la propiedad y establecer tres propiedades (variables globales) de MaxPageNumber, RecordsPerPage y CurrentPageNumber. VI6.0 puede usar métodos Get and Set para leer y escribir sus valores.
Paso 3: Escriba el evento OnDatasetComplete de RecordSet1.
- FunctionRecordSet1_ondataSetComplete ()
- Registros de registro = 5
- Emplist.setRecordSperPage (RecordsperPage) // Establezca el número de registro del objeto de la página web por atributo de página a 5
- TotalRecordCount = RecordSet1.getCount () // Obtenga el número total de registros
- MPN = int (TotalRecordCount/RecordsperPage) // Calcule MPN como el número total de páginas
- If (TotalRecordCountModRecordSperPage) > 0Then
- MPN = MPN+1
- Endif
- Emplist.SetMaxPageNumber (MPN)
- Función final
Paso 4: Arrastre los controles de cuatro botones en la página web y escriba un script de control de turno de página. Principalmente nos damos cuenta de que el turno de la página cambia el valor de la propiedad CurrentPageNumber del objeto de la página web.
- Functtnfirst_onclick () 'Flip a la página de inicio
- Emplist.setCurrentPageNumber (1)
- Función final
- Functtnprevious_onclick () 'voltea a la página anterior
- CPN = Emplist.getCurrentPageNumber ()
- ifcpn > 1
- Emplist.setCurrentPageNumber (CPN-1)
- Endif
- Función final
- Functtnnext_onclick () 'voltea a la página siguiente
- CPN = Emplist.getCurrentPageNumber ()
- ifcpn < Emplist.getMaxPageNumber () entonces
- Emplist.setCurrentPageNumber (CPN+1)
- Endif
- Función final
- Functtnlast_onclick () 'voltee a la última página
- Emplist.SetCurrentPageNumber (Emplist.getMaxPageNumber ())
- Función final
Para garantizar que se muestre la primera página al ingresar a la página por primera vez, tenemos que escribir el evento OnEnder del objeto de la página web.
- FunctionEmplist_onenter ()
- Ifempplist.firstenteredThen
- Emplist.setCurrentPageNumber (1)
- Endif
- Función final
- Paso 5: Escriba un script que muestre cada página.
- < hr >< stableborder = 0 >< tr > // Muestra el encabezado
- < thalign = anchura izquierda = 35 ></th >
- < thalign = anchura izquierda = 150 > Empid </th >
- < thalign = Leftwidth = 200 > LastName </th >
- < thalign = Leftwidth = 200 > FirstName </th ></tr >
- <%
- pagenumber = Emplist.getCurrentPageNumber () // Calcule varios parámetros requeridos para el turno de la página, igual que el método DHTML dos
- RecordSperPage = Emplist.getRecordSperPage ()
- Startrecord = (((PageNumber-1)*RecordsperPage) +1
- Lastrecord = RecordSet1.getCount ()
- ForRecordPtr = Startrecordto (Startrecord+RecordSperPage-1)%>
- <%ifrecordset1.eof = TrueThen%>
- < TR >
- < TD ></TD >
- < TD ></TD >
- < TD ></TD >
- < TD ></TD >
- </tr >
- <%más%>
- <%RecordSet1.MoveAbsolute (RecordPtr)%>
- < TR >
- <%ifrecordPtr < = lastrecordThen%>
- < TD ><%= RecordPtr%></TD >
- <%más%>
- < TD ></TD >
- <%endif%>
- < TD ><%= RecordSet1.fields.getValue (Empid)%></TD >
- < TD ><%= RecordSet1.fields.getValue (LastName)%></TD >
- < TD ><%= RecordSet1.fields.getValue (FirstName)%></TD >
- </tr >
- <%endif%>
- <%siguiente%>
- </tabla >< hr >
El séptimo tipo: Método del modelo de objeto de entorno de datos
El modelo de objeto de entorno de datos abstrae el modelo de objeto ADO y sus objetos (conexión, comando, registro, campo, campo y objetos de parámetros) en una forma más fácil. El modelo de objeto de entorno de datos revela comandos como métodos. El usuario puede llamar a estos métodos, que ejecutan estos comandos y devuelven el conjunto de registros resultante. Para obtener información detallada sobre el modelo de objeto Deom, consulte los libros relevantes. Echemos un vistazo al siguiente ejemplo de Emp7.asp:
Paso 1: haga clic con el botón derecho en el mouse en el proyecto en la ventana del explorador del proyecto de VI6.0 y seleccione Agregar conexión de datos en el menú emergente. Después de establecer una conexión a la base de datos de acuerdo con las indicaciones de navegación dadas por el VI, el usuario agrega un comando de datos para acceder a la base de datos desde la aplicación ASP. Al mismo tiempo, verá un objeto de entorno de datos en el archivo global.ASA en la ventana del explorador de proyectos.
Paso 2: haga clic con el botón derecho en el objeto de entorno de datos y seleccione la opción Agregar comando de datos en el menú emergente para agregar un comando de comando de datos1. De acuerdo con las indicaciones de navegación de VI6.0, puede seleccionar la instrucción SQL en la página genetal de la ventana emergente de las propiedades del comando1 e ingrese: seleccione * de Emp. Presione OK para regresar.
Paso 3: Después de crear este comando de datos, ha creado un método para el objeto de entorno de datos, y luego puede llamar a este método desde el script, y el método devolverá un conjunto de registros al usuario.
thisPage.CreateDe () // En modo SOM, esta página representa el objeto de página web actual, y el método create () crea el objeto DE.
DE.COMMAND1 // Ejecutar el comando del objeto DE, que se puede usar como parámetro más adelante, que es muy útil al hacer consultas condicionales.
Establecer rs = de.rscommand1 // de.rscommand1 hace que el objeto RS sea completamente equivalente a un objeto ADO RecordSet.
Paso 4: Debido a que RS es un objeto ADO, el siguiente código de giro de la página de implementación se refiere por completo a los métodos introducidos anteriormente, y se omite aquí.
Otros métodos como los implementados en la navegación de la base de datos en FrontPage2000 no están relacionados con este tema, por lo que se omite aquí.
En resumen, cada método introducido anteriormente contiene muchas tecnologías nuevas, que no se pueden penetrar debido a la longitud. Este artículo solo quiere introducir varios métodos de programación web ASP a través del ejemplo específico del cambio de página; Programación de la página;