Este artigo apresenta principalmente sete métodos para implementar a exibição de paginação no ASP.
No sistema de programação ASP da Microsoft, o estabelecimento de objetos ADO torna o acesso a bancos de dados das páginas da web uma tarefa fácil, especialmente o objeto ADO RecordSet o torna mais conveniente e gratuito para exibir a saída dos dados de controle. No visual interdev6.0 (a seguir referido como VI6.0), devido à introdução de modelos de objetos, como o modelo de objeto de script (a seguir referido como SOM), controle de tempo de design (a seguir referido como DTC) e ambiente de dados Modelo de objeto (a seguir referido como Deom), torne as páginas da web mais convenientes para acessar o banco de dados.
Devido ao tópico, em relação às conexões de banco de dados, o seguinte fornece apenas código e comentários breves e se concentra em como usar objetos (ou controles) para implementar a exibição de paginação dos registros de dados. De acordo com o meu entendimento, a chave para a exibição da paginação é dominar as propriedades e métodos do objeto RecordSet da ADO ou DTC (controle de tempo de design).
Essas sete armas exibidas nas páginas estão resumidas em quatro categorias: as primeiras e as segundas que as chamo temporariamente de método ASP puro.
Este também é o método mais usado nos sites domésticos do ASP. A implementação desses dois métodos é a mais fácil de entender, o menor conceito de objeto é usado e os requisitos mínimos para o ambiente de desenvolvimento (apenas no bloco de notas). Pode -se dizer que a essência desses dois métodos ainda é a idéia de programação do CGI, que está apenas introduzindo objetos ADO no programa.
O quarto e o quinto métodos DHTML denominados temporariamente SOM.
Esses dois métodos requerem o uso do modelo de objeto de script da Microsoft (modelo de objeto de script) e os novos recursos da ligação do banco de dados de objetos de tabela em dhtml em vi6.0 (muitos livros e artigos apenas apresentam os recursos CSS do dhtml o aplicativo em design de design Ignora a introdução de suas características de ligação de dados e percebe a rotatividade de páginas no lado do cliente. No entanto, exige que o navegador do usuário forneça suporte a DHTML, como: Microsoft Internet Explorer 4.0 e acima.
O sexto método é chamado temporariamente SOM Método do lado do servidor.
Requer desenvolvimento no ambiente VI6.0, que usa vários controles DTC no modelo de objeto de script proposto pela Microsoft: RecordSet, PageObject, Grid, etc. para implementar o controle de girar a página no lado do servidor (cliente). Este é um método emocionante e novo de programação que trata as páginas da web como objetos (esse modelo de objeto é diferente do DOM tradicional ---- Modelo de objeto de documento: DOM pode controlar apenas o cliente, enquanto o SOM pode controlar o lado do servidor e o lado do cliente ), que realmente implementa a programação orientada a objetos de páginas da web. Infelizmente, talvez minha capacidade pessoal seja limitada, e eu pessoalmente acho que essa tecnologia ainda não está muito madura.
O sétimo método é temporariamente nomeado Método Deom.
Ele também usa o modelo de objeto de ambiente de dados estabelecido em vi6.0 para criar objetos RecordSet. Este também é um novo método relativamente raro na programação da Web.
Todos os códigos de origem mencionados posteriormente podem ser copiados e usados diretamente.
Antes de começarmos a introduzir vários métodos de paginação em detalhes, vamos criar um banco de dados: use o acesso no Office97 para criar um funcionário.mdb, que cria uma tabela EMP, e define apenas três campos: ID EMP, sobrenome e nome do primeiro nome. Por que isso é simples?
O primeiro método de substituir parâmetros diretamente
Esse método é criar manualmente um objeto RecordSet e usar seu PageSize (especifique o número de registros exibidos por página), as propriedades PageCount (número total da página) e AbsolutePage (número atual da página) para controlar a saída da página. A paginação da página usa o método dos parâmetros diretamente de numeração da página para controlar a rotatividade da página. O nome da página da web é Emp1.asp. O código -fonte é o seguinte:
- <%// Estabeleça uma conexão com o banco de dados do Employee.MDB.
- SetConn = server.createObject (adodb.connection)
- Conn.OpendRiver = {Microsoft AccessDriver (*. MDB)}; dbq = funcionário.mdb
- // Crie uma instância do objeto RecordSet da tabela EMP.
- Setrs = server.createObject (adodb.recordset)
- Rs.openemp, Conn, 3
- PageSize = 10 // Pagesize o atributo especifica o número de registros a serem exibidos em cada página.
- Página = clng (solicitação (página)) 'Tipo de string convertido em tipo longo
- IFPAGE < 1THENPAGE = 1
- IFPAGE> RS.PAGECOUNTTHENPAGE = RS.PAGECOUNT
- IFPAGE <> 1 Then
- Response.write < ahref = emp1.asp? Page = 1 > página1 </a>
- Response.write < ahref = emp1.asp? Página = & (página-1) e > página anterior </a>
- Endif
- IFPAGE <> rs.PagecountThen
- Response.write < ahref = emp1.asp? Página = & (página+1) & > Próxima página </a>
- Response.write < ahref = emp1.asp? Page = & rs.pagecount & > > < </a>
- Endif
- Resposta.Write Página Número: & Page &/& Rs.Pagecount & </Fonte >
- // Exibição de cada página
- // Mostre o cabeçalho
- Response.Write < Centro >< Tableborder = 1 >
- Response.write < tr >< td > & rs.fields (empid) .name & </td >
- Response.write < td > & rs.fields (lastName) .name & </td >
- Response.write < td > & rs.fields (primeironame) .name & </td ></tr >
- // Ciclo a exibição de cada registro
- rs.absolutePage = página // atribui o número da página ao atributo absolutePage para saber o primeiro número de registro da página atual
- Foripage = 1Tors.Pagesize //
- Response.write < tr >< td > & rs.fields (empid) .Value & </td >
- Response.write < td > & rs.fields (primeironame) .Value & </td >
- Response.write < td > & rs.fields (lastName) .Value & </td ></tr >
- rs.movenext
- Ifrs.eoftThenexitfor
- Próximo
- Response.write </tabela ></centro >%>
O segundo tipo: método de parâmetro de transferência de formulário
Esse método é o mesmo que o primeiro ao criar um objeto RecordSet, exceto que, quando o controle de giro da página, ele usa uma instrução de caso para obter giro de página. O nome da página da web é: EMP2.asp. Este método tem uma desvantagem na lógica de programação: ele girará automaticamente a página depois de pressionar a página anterior ou a próxima página do botão e pressionar o botão Atualizar no navegador. O código -fonte é o seguinte:
- ifpagenum = thenpagenum = 1 // Mostrar na primeira página
- // Crie a conexão do banco de dados e a instância do objeto RECORD RS.
- O mesmo que o primeiro método, pulado aqui.
- Rs.pagesize = 10'Set O número de registros exibidos em uma página para 10
- // Confirme a ação de giro de página
- SelectCaseRequest (NAV)
- Caso
- sessão (pagenum) = 1
- CaseFirst'Firstrecord
- sessão (pagenum) = 1
- Caseprev'previousRecord
- IfSession (Pagenum)> 1THEN
- sessão (pagenum) = sessão (pagenum) -1
- Endif
- CASENEXT'NEXTRECORD
- ifSession (Pagenum) < rs.PagecountThen
- sessão (pagenum) = sessão (pagenum) +1
- Endif
- CASELAST'LASTRECORD
- sessão (pagenum) = rs.pagecount
- EndSelect
- Rs.absolutePage = clng (sessão (pagenum)) // Determine o primeiro número de registro da página atual
- // Mostre a página atual
- O mesmo que o primeiro método, pule aqui.
- // configurações de botão de giro da página de navegação
- < formmethod = getAction = EMP2.asp >
- < inputType = submitname = NavValue = home>
- < inputType = submitValue = Nome da página anterior = NAV >
- < inputType = submitValue = Nome da próxima página = NAV >
- < inputType = submitValue = Última página Nome = Nav ></Formulário >
O terceiro tipo: use controle de grade para projetar paginação
De todos os métodos, esse método é o mais fácil. Você só precisa arrastar o controle do registro e o controle da grade no DTC para a página da Web ASP. Além disso, você também pode optar por controlar a rotatividade de páginas na plataforma do servidor ou na plataforma do cliente. A desvantagem é que você deve exibi -lo no formato dado por ele e não pode controlar o formato de exibição da tabela sozinho.
O método é o seguinte:
Construa um projeto emp.vip em vi6.0. Em seguida, adicione uma página da Web ASP no projeto: emp3.asp.
Etapa 1: Selecione Adicionar dados Connect… na barra de menus VI6.0 e siga os avisos de navegação da ferramenta de desenvolvimento e você pode estabelecer facilmente uma conexão com o banco de dados do Employee.MDB. Arraste um controle de registro da barra de ferramentas DTC para a página da web e defina suas propriedades. Específico, conforme mostrado na figura:
Quando você arrasta o controle para a página da web, o VI6.0 solicita automaticamente se usar o modelo de objeto de script e pressionar sim.
Etapa 3: arraste um controle de grade da barra de ferramentas DTC para a página da web e clique com o botão direito do mouse para definir suas propriedades, como: selecione o nome do controle de registro criado na segunda etapa, selecione os campos na tabela EMP e cada página Quantos registros são exibidos e o formato de exibição, etc. É muito simples e conveniente, basta seguir os avisos de navegação.
O quarto tipo: método dhtml um.
Os registros de dados são exibidos em uma tabela HTML. Ele usa as características de ligação de dados das tabelas no DHTML para controlar a exibição da paginação dos registros. A desvantagem é que o método da sua página de página será limitado a um método específico: apenas a página anterior e a próxima página, mas não a página inicial e a última página. Como é controlado no lado do cliente, este e o quinto método são os mais rápidos, mas infelizmente só pode ser usado em navegadores que suportam o DHTML.
Em dhtml,
A propriedade DATASRC permite que a tabela seja vinculada a uma fonte de dados, e a outra propriedade DataPagageSee especifica o número de registros exibidos em uma página por vez.
Vejamos o exemplo a seguir:
Etapa 1: arraste o controle de registro para a página da web recém -criada EMP4.htm e defina suas propriedades.
Etapa 2: insira o seguinte código:
- < TABLEID = tabela1DataSrc =#RecordSet1_RDSDataPagageSize = 5 > // Supondo que o nome do controle do registro do registro seja registrador1 antes do ser definido. 5 registros são exibidos por página.
- < Thead >
- < thalign = ledwidth = 150 > empid </th > // Cabeçalho da tabela de saída
- < thalign = leftWidth = 200 > Sobrenome </th >
- < thalign = leftwidth = 200 > primeiro nome </th >
- </Thead >
- < TR >
- < TD >< DivDataFld = empid ></div ></td > // Tabela de saída Conteúdo da tabela
- < td >< divdataFld = lastName ></div ></td >
- < td >< divdatafld = primeiro nome ></div ></td >
- </tr >
- </Tabela >
Etapa 3: Em seguida, adicione um par de controles do botão DTCS para fazer a página de virar a navegação, um chamado BtnPrevious (página anterior) e o outro chamado BtnNext (próxima página). Seus scripts correspondentes são os seguintes:
- < ScriptLanguage = VBScript >
- Funbtnprevious_onClick ()
- Tabela1.PreviousPage ()
- Função final
- FuncttnNext_onClick ()
- Tabela1.NextPage ()
- Função final
- </script >
Quinto Tipo: Método DHTML Dois
Este método é uma perfeição para o quarto método. O método de script manual nos permite fazer a página inicial e a última página girar os botões de navegação e determinar a localização de cada registro (número de registro). Devido ao comprimento, vou apresentar apenas um exemplo específico abaixo e darei uma breve explicação. Para outras propriedades e métodos de controles DHTML e RecordSet, consulte os livros relevantes por si mesmo. Deve -se notar aqui que o controle do conjunto de registros é um pouco diferente do objeto ADO RecordSet introduzido no primeiro e no segundo métodos: o controle do registro não fornece diretamente propriedades como PageSize e Pagecount e precisa ser calculado usando o método introduzido abaixo.
Etapa 1: arraste o controle de registro para a página da web recém -criada emp5.htm, com o nome RecordSet1 e defina suas propriedades.
Etapa 2: Defina três variáveis globais e escreva o script OnDatasetComplete do RecordSet1.
- DimgCurrentPageNumber // Número da página atual
- DimgmaxpageNumber // Número máximo de páginas
- DimGreCordsPage // Número de registros exibidos por página
- Grecordsperpage = 5 // Defina o número de registros exibidos por página como 5 registros.
- FunctionRecordset1_ondatasetComplete ()
- totalRecordCount = RecordSet1.getCount () // Número total de registros
- gmaxpageNumber = int (TotalRecordCount/Grecordsperpage) // Obtenha o número máximo de páginas
- If (totalRecordCountModGreCordSperpage) > 0then
- gmaxpageNumber = gmaxpageNumber+1
- Endif
- Função final
Etapa 3: Crie um botão de navegação gire a página.
- Functtnfirst_onClick () 'flip para a página inicial
- gcurrentpageNumber = 1
- DisplayData ()
- Função final
- FunctnPrevious_onClick () 'Flip para a página anterior
- ifgCurrentPageNumber> 1THEN
- gcurrentpageNumber = gcurrentpageNumber-1
- DisplayData ()
- Endif
- Função final
- Functtnnext_onClick () 'flip para a próxima página
- ifgCurrentPageNumber < gmaxpageNumberThen
- gcurrentpageNumber = gcurrentpageNumber+1
- DisplayData ()
- Endif
- Função final
- Functtnlast_onClick () 'flip para a última página
- gcurrentpageNumber = gmaxpageNumber
- DisplayData ()
- Função final
Etapa 4: escreva uma função que exibe cada página. Muitas propriedades e métodos DHTML são usados, consulte os livros relevantes por si mesmo.
- Subdisplaydata ()
- startrecord = ((gcurrentpageNumber-1)*grecordsperpage)+1 // calcular o número de registros exibidos no início de cada página (posição, qual item)
- rowctr = 1
- lblpageNumber.innerhtml = gcurrentpageNumber &/& gmaxpageNumber
- Forrecordptr = startrecordto (startrecord+grecordsperpage-1) // ciclando para exibir cada registro em uma página
- Ifrecordptr > registroSet1.getCount () Então // Mostra a tabela vazia
- Tabela1.Rows (Rowctr) .Cells (0) .innerhtml = < p ></p >
- Tabela1.Rows (Rowctr) .Cells (1) .innerhtml = < p ></p >
- Tabela1.Rows (Rowctr) .Cells (2) .innerhtml = < p ></p >
- Tabela1.Rows (Rowctr) .Cells (3) .innerhtml = < p ></p >
- Else // Especifique cada página
- RecordSet1.MoveAbSolute (Recordptr) // Mova o ponteiro do registro.
- empid = registroset1.fields.getValue (empid)
- emplname = RecordSet1.fields.getValue (primeiro nome)
- EMPFNAME = RECORDSET1.FIELDS.GETVALUE (SALTNAME)
- Tabela1.Rows (Rowctr) .Cells (0) .InnerText = Recordptr'Counter
- Tabela1.Rows (Rowctr) .Cells (1) .InnerText = empid
- Tabela1.Rows (Rowctr) .Cells (2) .InnerText = emplName
- Tabela1.Rows (Rowctr) .Cells (3) .InnerText = EMPFName
- Endif
- rowctr = rowctr+1
- Próximo
- Endsub
Além disso, também precisamos escrever o seguinte script no evento OnLoad do objeto da janela:
- Forrowctr = 1TogRecordSperpage
- Tabela1.InserTrow (Rowctr) 'Insira uma nova coluna
- Forcellctr = 0to3
- Tabela1.Rows (Rowctr) .InSertCell ()
- Próximo
- Próximo
O sexto método: rotatividade da página de controle do servidor.
Se paginarmos os dados no servidor e, em seguida, otá -los para o cliente, não haverá problema em que o navegador não suportasse o DHTML. No entanto, o uso do método do lado do servidor nos faz precisar regenerar o controle do registro sempre que giramos a página, para que a velocidade seja definitivamente mais lenta do que o uso do método DHTML. Mas se o servidor for rápido o suficiente, a lentidão do cliente não notará.
No exemplo a seguir, apresentarei um novo controle DTC: PageObject. Esse controle torna a página da web especificada um objeto e as sub -rotinas e funções organizadas pelo usuário no script do servidor da página da web podem ser consideradas como métodos do objeto da página da web. Ele fornece um método avançado para gerenciar informações do estado: os objetos da Web possuem algumas propriedades (variáveis) que os usuários podem definir a vida útil dessas propriedades. Por causa dos recursos acima, torna-nos muito convenientes para compilar scripts que virarem páginas.
Mas a desvantagem desse método é: quando você pressiona a página anterior ou a próxima página e pressione o botão Atualizar no navegador, a página da web girará automaticamente as páginas. Além disso, se você pressionar o botão Fallback no navegador e pressionar o botão Virar a página, poderá girar aleatoriamente. Tudo isso é causado pelas propriedades do objeto da web (variáveis globais).
Etapa 1: arraste o controle de registro para a página da web recém -criada emp6.asp, com o nome RecordSet1 e defina suas propriedades.
Etapa 2: arraste o controle PageObject para a página da web e nomeie -o emplista. Em seguida, clique com o botão direito do mouse neste controle para abrir a página da propriedade e definir três propriedades (variáveis globais) de maxpageNumber, registrosPage e CurrentPageNumber. VI6.0 pode usar métodos GET e Set para ler e escrever seus valores.
Etapa 3: Escreva o evento OnDatasetComplete do registroSet1.
- FunctionRecordset1_ondatasetComplete ()
- RecordsPage = 5
- Emplist.SetRecordsPage (RecordsPage) // Defina o número de registro do objeto da página da web por página de página para 5
- totalRecordCount = RecordSet1.getCount () // Obtenha o número total de registros
- mpn = int (TotalRecordCount/RecordsPage) // Calcule MPN como o número total de páginas
- If (totalRecordCountModRecordSperpage) > 0then
- mpn = mpn+1
- Endif
- Emplist.setMaxPageNumber (MPN)
- Função final
Etapa 4: arraste os controles de quatro botões para a página da web e escreva uma página Script de controle de giro. Percebemos principalmente a página da página alterando o valor da propriedade CurrentPageNumber do objeto da página da web.
- Functtnfirst_onClick () 'flip para a página inicial
- emplist.setCurrentPageNumber (1)
- Função final
- FunctnPrevious_onClick () 'Flip para a página anterior
- cpn = emplist.getCurrentPageNumber ()
- ifcpn > 1hen
- Emplist.SetCurrentPageNumber (CPN-1)
- Endif
- Função final
- Functtnnext_onClick () 'flip para a próxima página
- cpn = emplist.getCurrentPageNumber ()
- ifcpn < emplist.getMaxPageNumber () Então
- Emplist.SetCurrentPageNumber (CPN+1)
- Endif
- Função final
- Functtnlast_onClick () 'flip para a última página
- emplist.setCurrentPageNumber (emplist.getMaxPageNumber ())
- Função final
Para garantir que a primeira página seja exibida ao inserir a página pela primeira vez, temos que escrever o evento Onenter do objeto da página da web.
- FunctionEmplist_onenter ()
- Ifemplist.FirstenterDEN
- emplist.setCurrentPageNumber (1)
- Endif
- Função final
- Etapa 5: Escreva um script que exiba cada página.
- < hr >< Tableborder = 0 >< tr > // Exibe o cabeçalho
- < thalign = ledwidth = 35 ></th >
- < thalign = ledwidth = 150 > empid </th >
- < thalign = leftWidth = 200 > Sobrenome </th >
- < thalign = leftwidth = 200 > primeiro nome </th ></tr >
- <%
- pagenumber = emplist.getCurrentPageNumber () // Calcule vários parâmetros necessários para a volta da página, igual ao método dhtml dois
- RecordsPage = emplist.GetRecordsPage ()
- Startrecord = ((Pagenumber-1)*RecordsPage) +1
- lastrecord = recordSet1.getCount ()
- ForRecordPtr = Startrecordto (Startrecord+RecordsPage-1)%>
- <%ifRecordSet1.eof = truethen%>
- < TR >
- < TD ></TD >
- < TD ></TD >
- < TD ></TD >
- < TD ></TD >
- </tr >
- <%mais%>
- <%RegistSet1.MoveAbsolute (registroptr)%>
- < TR >
- <%ifrecordptr < = lastrecordThen%>
- < td ><%= registroptr%></td >
- <%mais%>
- < TD ></TD >
- <%endif%>
- < td ><%= registroset1.fields.getValue (empid)%></td >
- < td ><%= registroset1.fields.getValue (lastName)%></td >
- < td ><%= registroset1.fields.getValue (primeironame)%></td >
- </tr >
- <%endif%>
- <%Next%>
- </tabela >< hr >
O sétimo tipo: Modelo de Objeto de Ambiente de Dados Método
O modelo de objeto de ambiente de dados abstrai o modelo de objeto ADO e seus objetos - conexão, comando, conjunto de registros, campo e objetos de parâmetro - em uma forma mais fácil. O modelo de objeto de ambiente de dados revela comandos como métodos. O usuário pode chamar esses métodos, que executam esses comandos e retornam o conjunto de registros resultante. Para obter informações detalhadas sobre o modelo de objeto Deom, consulte os livros relevantes. Vamos dar uma olhada no seguinte exemplo de emp7.asp:
Etapa 1: Clique com o botão direito do mouse no mouse no projeto na janela do Project Explorer do VI6.0 e selecione Adicionar conexão de dados no menu pop-up. Após estabelecer uma conexão com o banco de dados de acordo com os avisos de navegação fornecidos pelo VI, o usuário adiciona um comando de dados para acessar o banco de dados no aplicativo ASP. Ao mesmo tempo, você verá um objeto de ambiente de dados no arquivo global.ASA na janela do Project Explorer.
Etapa 2: Clique com o botão direito do mouse no objeto de ambiente de dados e selecione a opção Adicionar Data Command no menu pop-up para adicionar um comando de dados com o comando1. De acordo com os avisos de navegação do VI6.0, você pode selecionar a instrução SQL na página Genetal da janela pop-up da Command1 Properties e digitar: Selecione * FROM EMP. Pressione OK para retornar.
Etapa 3: Depois de criar esse comando de dados, você criou um método para o objeto de ambiente de dados e, em seguida, pode chamar esse método do script e o método retornará um conjunto de registros para o usuário.
thispage.create () // No modo SOM, ThisPage representa o objeto da página da web atual, e o método Createde () cria o objeto DE.
De.Command1 // Execute o comando do objeto DE, que pode ser usado como um parâmetro posteriormente, o que é muito útil ao fazer consultas condicionais.
Set rs = de.rsCommand1 // de.rsCommand1 torna o objeto RS completamente equivalente a um objeto ADO RecordSet.
Etapa 4: como o RS é um objeto ADO, a seguinte página de implementação Código refere -se completamente aos métodos introduzidos acima e é ignorada aqui.
Outros métodos, como os implementados na navegação no banco de dados no FrontPage2000, não estão relacionados a este tópico, então aqui é omitido.
Em resumo, cada método introduzido acima contém muitas novas tecnologias, que não podem ser penetradas devido ao comprimento. Este artigo deseja apenas introduzir vários métodos de programação da Web ASP através do exemplo específico de giro de página; Programação da página;