Aperçu
---- Il existe maintenant de nombreux articles qui utilisent ASP pour atteindre une pagination dynamique. Cependant, dans les applications d'ingénierie réelles, la quantité de données d'origine est généralement très importante et le traitement des données d'origine est relativement lent.
---- Il existe deux façons principales de résoudre les problèmes ci-dessus: l'une consiste à corriger relativement les conditions de requête, à utiliser une condition de requête relativement fixe pour traiter les données d'origine, générer une petite bibliothèque intermédiaire de quantité de données. au milieu. Bien que cela améliorera les performances du programme, cela affectera la flexibilité du programme et le serveur doit traiter et maintenir régulièrement les données d'origine. Une autre façon consiste à enregistrer la requête du côté serveur. Bien que cela ne puisse pas améliorer les performances de la requête, le terminal du serveur peut répondre rapidement lorsque le remplacement du client. La réalisation de la première façon est relativement simple.
Méthode d'implémentation
---- Enregistrez les résultats de la requête sur le serveur dans un tableau dynamique, c'est-à-dire déclarer un tableau dynamique bidimensionnel pendant le processus Session_onstart. Lorsque le serveur reçoit la demande soumise par le client, le premier juge si la demande est des demandes conditionnelles ou un changement de page. le tableau.
Mise en œuvre du programme:
---- 1. Définissez un tableau à deux dimensions et d'autres variables
| Ce qui suit est le fragment de code: Sous-session_onstart Dim tempdb () Redim Preserve Tempdb (1,2) Session ("STOREDARRAY") = tempdb 'Définir un tableau de session session ("ipageCount") = 0 session ("ipageno") = 0 ... ... Sub-Sub |
---- 2. Appelez la procédure de stockage pour retourner les données
| Ce qui suit est le fragment de code: Sub getrcordset (strbbmc, strkssj, Strzzsj, strNodecode, strfxzl) Les paramètres sont des noms de rapport et diverses restrictions Sélectionnez Case Strbbmc Case "Formulaire de résumé des transactions" strcnn = "provider = msdasql; dsn = sqldb; uid = sa; pwd = 123456; Définir objcnn = server.createObje ("adodb.connection") objcnn.commandtimeout = 9999999 objcnn.ConnectionTimeout = 99999999 objcnn.cursorlocation = aduseclient Objcnn.open strcnn '' ouvrir la connexion Définir objrs = server.createObject ("Adodb.recordset") objrs.pagesize = ipageSize objrs.cachesize = ipageSize objrs.open "sszhatmlog '" & strkssj & "' ', '"" "" '"" "" AdlockReadonly, 1 «Effectuez la procédure de stockage aux résultats de la requête ... ... Sub-Sub |
---- 3. Enregistrez les résultats de la requête sur le tableau dynamique
| Ce qui suit est le fragment de code: Sub-SaveRecordSet () Si objrs.eof = false alors objrs.movelast Session ("IROWCOUNT") = objrs.rcordCount Session ("ifieldCount") = objrs.fields.Count session ("ipageCount") = objrs.pageCount Redim Preserve Temparray (session ("IrOwCount"), session ("ifieldCount")) 'Temparray est un tableau dynamique à deux dimensions, Définissez sa taille en fonction de la taille du jeu d'enregistrements objrs.movefirst iCount = 0 faire pendant que objrs.eof = false iCount = iCount + 1 pour i = 1 à la session ("ifieldcount") Temparray (iCount, i) = objrs.fields.item (I -1). suivant objrs.movenext boucle Session ("StoredArray") = temparray objrs.close autre session ("ipageCount") = 0 terminer si Sub-Sub |
---- 4. Afficher le contenu d'enregistrement
| Ce qui suit est le fragment de code: Sub ShowRecord () ... ... LocalRay = Session ("StoredArray") Ishowtotal = (ipagecurrent -1) * ipageSize + 1 IROWLOOP = 1 Faire pourquoi irOwloop <= ipageSize et Ishowtotal <= session ("IROWCOUNT") Réponse.write ("<Ter>") pour i = 1 à la session ("ifieldcount") Réponse.write ("<td>" & Localray (Ishowtotal, i)) ensuite Réponse.write ("</tr>) ishowtotal = ishowtotal + 1 IROWLOOP = IROWLOOP + 1 BOUCLE Réponse.write ("</pally>") Si ipagecurrent <> 1 et ipagecurrent <session ("IpageCount") puis %> <Ster> <a href = "db_pag.asp? Page = <% = ipagecurrent -1%> "> page précédente </a> <a href = "Db_pag.asp? Page = <% = ipagecurrent + 1%>"> La dernière page </a> </senter> <% autre Si ipagecurrent <> 1 alors %> <Ster> <a href = "db_pag.asp? Page = <% = IPAGECurrent -1%> "> page précédente </a> </senter> <% terminer si Si ipageCurrent <session ("ipageCount") %> <Nenter> <a href = "db_pag.asp? Page = <% = Ipagecurrent + 1%> "> Page ultérieure </a> </ Center> <% terminer si terminer si Sub-Sub |