Visão geral
---- Agora existem muitos artigos que usam ASP para obter paginação dinâmica. No entanto, em aplicativos de engenharia reais, a quantidade de dados originais é geralmente muito grande e o processamento dos dados originais é relativamente lento.
---- Existem duas maneiras principais de resolver os problemas acima: um é relativamente corrigido as condições de consulta, usar uma condição de consulta relativamente fixa para processar os dados originais, gerar uma pequena biblioteca intermediária de quantidade de dados. para o meio. Embora isso melhore o desempenho do programa, ele afetará a flexibilidade do programa e o servidor precisa processar e manter os dados originais regularmente. Outra maneira é salvar a consulta no lado do servidor. Embora isso não possa melhorar o desempenho da consulta, o terminal do servidor pode responder rapidamente quando a substituição do cliente. A realização da primeira maneira é relativamente simples.
Método de implementação
---- Salvar os resultados da consulta no servidor em uma matriz dinâmica, ou seja, declarar uma matriz dinâmica bidimensional durante o processo session_onstart. Quando o servidor recebe o aplicativo enviado pelo cliente, o primeiro juiz se o aplicativo é consultas condicionais ou uma alteração de página. a matriz.
Implementação do programa:
---- 1. Definir matriz bidimensional e outras variáveis
A seguir, o fragmento de código: Sub session_onstart Dim tempdb () Redim Preserve Tempdb (1,2) sessão ("storedArray") = tempdb 'Defina uma matriz de sessão sessão ("ipageCount") = 0 sessão ("ipageno") = 0 ... ... Final sub |
---- 2. Ligue para o procedimento de armazenamento para retornar os dados
A seguir, o fragmento de código: Sub getrcordset (strbbmc, strkssj, Strzzsj, strnodecode, strfxzl) '' Parâmetros são nomes de relatórios e várias restrições Selecione o caso STRBBMC Caso "forma de resumo da transação" strcnn = "provedor = msdasql; dsn = sqldb; UID = SA; Definir objcnn = server.createobje ("adodb.connection") objcnn.CommandTimeout = 9999999 objcnn.ConnectionTimeout = 99999999 objcnn.cursorLocation = aduseclient Objcnn.open strcnn '' Abra a conexão Set objrs = server.createObject ("Adodb.recordset") objrs.pagesize = ipagesize objrs.cachesize = ipagesize objrs.open "sszhatmlog '" & strkssj & "' ', '"" "" '"" "" Adlockreadonly, 1 'Execute o procedimento de armazenamento de volta aos resultados da consulta ... ... Final sub |
---- 3. Salve os resultados da consulta na matriz dinâmica
A seguir, o fragmento de código: Sub SavereCordSet () se objrs.eof = false então objrs.movelast sessão ("irowcount") = objrs.rcordcount sessão ("ifieldCount") = objrs.fields.count sessão ("ipageCount") = objrs.pageCount Redim Preserve Temparray (sessão ("IrowCount"), sessão ("ifieldCount")) 'Temparray é uma matriz dinâmica bidimensional, Defina seu tamanho de acordo com o tamanho do conjunto de registros objrs.movefirst ICOUNT = 0 fazer enquanto objrs.eof = false ICOUNT = ICOUNT + 1 para i = 1 a sessão ("ifieldCount") Temparray (iCount, i) = objrs.fields.item (I -1) próximo objrs.movenext laço sessão ("storedArray") = temparray objrs.close outro sessão ("ipageCount") = 0 final se Final sub |
---- 4. Exibir conteúdo de registro
A seguir, o fragmento de código: Sub ShowRecord () ... ... Localray = Session ("StoredArray") ishowtotal = (ipageCurrent -1) * iPagesize + 1 Irowloop = 1 Faça por que Irowloop <= ipagesize e ishowtotal <= sessão ("IrowCount") Response.Write ("<er>") para i = 1 a sessão ("ifieldCount") Response.Write ("<Td>" & Localray (ishowtotal, i)) Próximo Response.Write ("</tr>) ishowtotal = ishowtotal + 1 Irowloop = irowloop + 1 loop Response.Write ("</ tabela>") Se ipAGecurrent <> 1 e ipageCurrent <Sessão ("IpageCount") então %> <ter> <a href = "db_pag.asp? Page = < % = ipAGecurrent -1 %> "> página anterior < /a> <a href = "Db_pag.asp? Page = < % = ipAGecurrent + 1 %>"> A última página </a> </fente> < % outro Se ipAGecurrent <> 1 então %> <ter> <a href = "db_pag.asp? Page = < % = ipAGecurrent -1 %> "> página anterior < /a> </fenter> < % final se Se ipAGecurrent <Session ("ipageCount") %> <Center> <a href = "db_pag.asp? Page = < % = IpAGeCurrent + 1 %> "> página posterior </a> < /central> < % final se final se Final sub |