Descripción general
---- Ahora hay muchos artículos que usan ASP para lograr la paginación dinámica. Sin embargo, en las aplicaciones de ingeniería reales, la cantidad de datos originales suele ser muy grande, y el procesamiento de los datos originales es relativamente lento.
---- Hay dos formas principales de resolver los problemas anteriores: uno es fijar relativamente las condiciones de consulta, usar una condición de consulta relativamente fija para procesar los datos originales, generar una pequeña biblioteca intermedia de la cantidad de datos. al medio. Aunque esto mejorará el rendimiento del programa, afectará la flexibilidad del programa y el servidor necesita procesar y mantener los datos originales regularmente. Otra forma es guardar la consulta en el lado del servidor. Aunque esto no puede mejorar el rendimiento de la consulta, el terminal del servidor puede responder rápidamente cuando el reemplazo del cliente. La realización de la primera forma es relativamente simple.
Método de implementación
---- Guarde los resultados de la consulta en el servidor en una matriz dinámica, es decir, declarar una matriz dinámica bidimensional durante el proceso session_onstart. Cuando el servidor recibe la aplicación presentada por el cliente, el primer juez si la aplicación es consultas condicionales o un cambio de página en esta matriz, el contenido de la primera página se devuelve al cliente, de lo contrario, devolverá la página correspondiente directamente desde la matriz.
Implementación del programa:
---- 1. Definir una matriz de dos dimensiones y otras variables
El siguiente es el fragmento de código: Subsession_onstart Dim tempdb () Redim Preserve TEMPDB (1,2) Session ("StoredRarray") = TEMPDB 'Defina una matriz de sesión sesión ("ipageCount") = 0 sesión ("ipageno") = 0 ... Final |
---- 2. Llame al procedimiento de almacenamiento para devolver los datos
El siguiente es el fragmento de código: Sub getrcordset (strbbmc, strkssj, Strzzsj, strnodecode, strfxzl) '' Los parámetros son nombres de informes y varias restricciones Seleccione Caso STRBBMC Caso "Formulario de resumen de transacción" strcnn = "proveedor = msdasql; dsn = sqldb; uid = sa; Establecer objcnn = server.createobje ("adodb.connection") objcnn.commandtimeout = 99999999 objcnn.ConnectionTimeOut = 999999999 objcnn.cursorlocation = aduseclient Objcnn.open strcnn '' Abra la conexión Establecer objrs = server.CreateObject ("ADODB.Recordset") objrs.pagesize = ipagesize objrs.cachesize = ipagesize objrs.open "sszhatmlog '" & strkssj & "' ', "" "" " "" "" " Adlockreadonly, 1 'Realice el procedimiento de almacenamiento a los resultados de la consulta ... Final |
---- 3. Guarde los resultados de la consulta en la matriz dinámica
El siguiente es el fragmento de código: Sub SaverecordSet () Si objrs.eof = falso entonces objrs.movelast sesión ("irowcount") = objrs.rcordCount sesión ("ifieldCount") = objrs.fields.count sesión ("ipageCount") = objrs.pageCount Redim Preserve Tempray (sesión ("IROWCount"), Session ("ifieldCount")) 'Temparray es una matriz dinámica de dos dimensiones, Definir su tamaño de acuerdo con el tamaño del conjunto de registros objrs.movefirst icount = 0 hacer mientras objrs.eof = falso icount = icount + 1 para i = 1 a la sesión ("ifieldCount") TEMPARRAY (ICOUNT, I) = objrs.fields.Item (I -1). próximo objrs.movenext bucle Session ("StoredRarray") = TempArray objrs.clar demás sesión ("ipageCount") = 0 final si Final |
---- 4. Mostrar contenido de registro
El siguiente es el fragmento de código: Sub showRecord () ... Localray = session ("StoredRarray") ishowtotal = (ipageCurrent -1) * ipagesize + 1 Irowloop = 1 Hacer por qué irowloop <= ipagesize e ishowtotal <= Session ("IROWCount") Response.write ("<Ter>") para i = 1 a la sesión ("ifieldCount") Response.write ("<TD>" & Localray (ishowtotal, i)) siguiente Response.write ("</tr>) ishowtotal = ishowtotal + 1 Irowloop = irowloop + 1 bucle Response.write ("</table>") Si ipagecurrent <> 1 y ipagecurrent <sesion ("IpageCount") entonces %> <ster> <a href = "db_pag.asp? Page = < % = ipageCurrent -1 %> "> página anterior </a> <a href = "Db_pag.asp? Page = < % = ipageCurrent + 1 %>"> La última página </a> </center> < % demás Si ipagecurrent <> 1 entonces %> <ster> <a href = "db_pag.asp? Page = < % = ipageCurrent -1 %> "> Página anterior < /a> </center> < % final si Si ipageCurrent <session ("ipageCount") %> <center> <a href = "db_pag.asp? < % = IpageCurrent + 1 %> "> Página posterior </a> < /Center> < % final si final si Final |