當前位置:首頁 » 雲伺服器 » 伺服器網口太多如何分頁顯示

伺服器網口太多如何分頁顯示

發布時間: 2022-09-10 05:18:21

Ⅰ 命令行cat 出來內容太多怎麼分頁顯示

1、cat最基本的用法就是查看文件的內容。

Ⅱ .NET MVC + sqlsugar 怎麼實現分頁顯示

其實個人認為不管是Asp.NET MVC還是普通的Web程式,上傳現實進度條這個功能都是很大一部分人都在期待解決的問題。針對B/S模式的上傳,如果需要實時的了解到上傳的進度的話,這對伺服器(IIS)壓力是非常大的,當然針對這樣子的實現時有的,比如
NeatUpload等,這都是基於Asp.Net來開發的開源上傳組件,他們上傳時顯示的進度條都是實時,實現的方式是,在頁面中創建了一個iframe,定是的來刷新伺服器端上傳的進度,然後在客戶端顯示上傳進度。<個人不建議採用這樣子的方式,因為如果使用該方式的話,會對伺服器端資源消耗過大

Ⅲ 伺服器有兩個網口,怎麼實現普通員工和管理者訪問分開

你可以在伺服器上面做設置,可以劃分一個vlan,一個網口一個vlan這樣可以將兩個網口的網路,在實際上,劃分出來,員工用一個網口管理層,用一個網口就可以實現普通員工和管理者的分開訪問

php網頁中內容太多如何讓他自動分頁

<?php /* PHP動態分頁測試代碼 */ //代碼開始↓ if(empty($page)) $page=0; //默認頁碼值為0(即第一頁) $total=152; //整體要顯示的條目總數 $pagenum=10; //每頁顯示條目數 //寫各頁的內容(可以處理其他事件) for($i=$page*$pagenum;$i<$page*$pagenum+$pagenum;$i++){ $tmpstr="第 ". ($i+1) ." 條記錄"; if($i<$total) print "$tmpstr<br>"; } //end of for //得到總頁數 $tpage 的值 if($total%$pagenum==0) { //若被整除 $tpage=$total/$pagenum; } else { //否則用floor函數取得最大整數然後+1 $tpage=floor($total/$pagenum)+1; } //智能化的前進後退+段頁碼方式實現超鏈 $id_pd=floor($page/5)*5; //當前頁頁碼數段初始id值 $startpagepre=$id_pd-5; $startpagenext=$id_pd+5; $lastpage=$tpage-1; print "<p>"; //處理首頁(<<)和前五頁(<) if($page==0){ print "<span style=\"color:red\"><<</span> "; }else{ print "<a title=\"首頁\" href=\"$php_self?page=0\"><<</a> "; } if($page<5){ print "<span style=\"color:red\"><</span> "; }else{ print "<a title=\"前五頁\" href=\"$php_self?page=$startpagepre\"><</a> "; } //寫頁段中的頁碼超鏈 for($i=$id_pd;$i<$id_pd+5;$i++){ $pg=$i+1; //頁碼數 if($i==$page){ if($i<$tpage) print "<span style=\"color:red\">$pg</span></a> "; }else{ if($i<$tpage) print "<a href=\"$php_self?page=$i\">$pg</a> "; } } //處理後五頁(>)和尾頁(>>) if($page>$tpage-5){ print "<span style=\"color:red\">></span> "; }else{ print "<a title=\"後五頁\" href=\"$php_self?page=$startpagenext\">></a> "; } if($page==$lastpage){ print "<span style=\"color:red\">>></span> "; }else{ print "<a title=\"尾頁\" href=\"$php_self?page=$lastpage\">>></a> "; } print "總頁數 <span style=\"color:red\">$tpage</span></p>"; ?>

Ⅳ ligerui如何實現伺服器分頁

ligerui
自身就支持分頁,只要伺服器端拿分頁的信息就可以,如分頁大小、第幾頁

http://www.ligerui.com/api/document/Grid/parms.htm

Ⅵ ADO查詢資料庫時怎麼分頁展示數據

其實方法有很多,但主要有兩種:
一、將資料庫中所有符合查詢條件的記錄一次性的都讀入 recordset 中,存放在內存中,然後通過 ADO Recordset 對象所提供的幾個專門支持分頁處理的屬性: PageSize( 頁大小 )、 PageCount( 頁數目 ) 以及 AbsolutePage( 絕對頁 ) 來管理分頁處理。
二、根據客戶的指示,每次分別從符合查詢條件的記錄中將規定數目的記錄數讀取出來並顯示。
兩者的主要差別在於前者是一次性將所有記錄都讀入內存然後再根據指示來依次做判斷分析從而達到分頁顯示的效果,而後者是先根據指示做出判斷並將規定數目的符合查詢條件的記錄讀入內存,從而直接達到分頁顯示的功能。
我們可以很明顯的感覺到,當資料庫中的記錄數達到上萬或更多時,第一種方法的執行效率將明顯低於第二種方法,因為當每一個客戶查詢頁面時都要將所有符合條件的記錄存放在伺服器內存中,然後在進行分頁等處理,如果同時有超過 100 個的客戶在線查詢,那麼 ASP 應用程序的執行效率將大受影響。但是,當伺服器上資料庫的記錄數以及同時在線的人數並不是很多時,兩者在執行效率上是相差無幾的,此時一般就採用第一種方法,因為第一種方法的 ASP 程序編寫相對第二種方法要簡單明了得多。

在這里作者就以我們常見的 ASP BBS 程序為例,來給大家分析一下如何在 BBS 程序里實現分頁顯示功能,由於我們一般使用的 BBS 程序的資料庫記錄數和同時訪問的人數都不會太多,所以以下程序實例是使用的先前所介紹的第一種分頁顯示方法。

進行 ADO 存取資料庫時的分頁顯示,其實就是對 Recordset 的記錄進行操作。所以我們首先必須了解 Reordset 對象的屬性和方法:
BOF 屬性:目前指標指到 RecordSet 的第一筆。
EOF 屬性:目前指標指到 RecordSet 的最後一筆。
Move 方法:移動指標到 RecordSet 中的某一條記錄。
AbsolutePage 屬性:設定當前記錄的位置是位於哪一頁 AbsolutePosition 屬性:目前指標在 RecordSet 中的位置。
PageCount 屬性:顯示 Recordset 對象包括多少「頁」的數據。
PageSize 屬性:顯示 Recordset 對象每一頁顯示的記錄數。
RecordCount 屬性:顯示 Recordset 對象記錄的總數。

Ⅶ (問題解決再追加100分)sql server存儲過程實現查詢數據條數過大,分頁查詢怎麼實現

按說5-8w這樣數量級的數據沒有問題,寫入Excel是布比較耗性能,主要還是要通過優化寫入Excel的代碼效率上去考慮。你可以考慮利用分批查詢寫入的方式來避免一次寫太多的數據到Excel:將你的查詢結果分段,比方你的語句中能不能用時間來認為分段,每次返回部分結果。
回到你的問題,對大數據量查詢的解決方案有以下兩種:
(1)、將全部數據先查詢到內存中,然後在內存中進行分頁,這種方式對內存佔用較大,必須限制一次查詢的數據量。
(2)、採用存儲過程在資料庫中進行分頁,這種方式對資料庫的依賴較大,不同的資料庫實現機制不通,並且查詢效率不夠理想。以上兩種方式對用戶來說都不夠友好。

2.解決思路
通過在待查詢的資料庫表上增加一個用於查詢的自增長欄位,然後採用該欄位進行分頁查詢,可以很好地解決這個問題。下面舉例說明這種分頁查詢方案。

(1)、在待查詢的表格上增加一個long型的自增長列,取名為「queryId」,mssql、sybase直接支持自增長欄位,oracle可以用sequence和trigger來實現。然後在該列上加上一個索引。
添加queryId列的語句如下:
Mssql: [QUERYID] [bigint] IDENTITY (1, 1)

Sybase: QUERYID numeric(19) identity

Oracle:
CREATE SEQUENCE queryId_S
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999999999 MINVALUE 1
CYCLE
CACHE 20
ORDER;
CREATE OR REPLACE TRIGGER queryId_T BEFORE INSERT
ON "test_table"
FOR EACH ROW
BEGIN
select queryId_S.nextval into :new.queryId from al;
END;

(2)、在查詢第一頁時,先按照大小順序的倒序查出所有的queryId,
語句如下:select queryId from test_table where + 查詢條件 +order by queryId desc 。
因為只是查詢queryId欄位,即使表格中的數據量很大,該查詢也會很快得到結果。然後將得到的queryId保存在應用伺服器的一個數組中。

(3)、用戶在客戶端進行翻頁操作時,客戶端將待查詢的頁號作為參數傳遞給應用伺服器,伺服器通過頁號和queyId數組算出待查詢的queyId最大和最小值,然後進行查詢。

算出queyId最大和最小值的演算法如下,其中page為待查詢的頁號,pageSize為每頁的大小,queryIds為第二步生成的queryId數組:
int startRow = (page - 1) * pageSize
int endRow = page * pageSize - 1;
if (endRow >=queryIds.length)
{
endRow = this.queryIds.length - 1;
}
long startId =queryIds[startRow];
long endId =queryIds[endRow];

查詢語句如下:
String sql = "select * from test_table" + 查詢條件 + "(queryId <= " + startId + " and queryId >= " + endId + ")";

3.效果評價
該分頁查詢方法對所有資料庫都適用,對應用伺服器、資料庫伺服器、查詢客戶端的cpu和內存佔用都較低,查詢速度較快,是一個較為理想的分頁查詢實現方案。經過測試,查詢4百萬條數據,可以在3分鍾內顯示出首頁數據,以後每一次翻頁操作基本在2秒以內。內存和cpu佔用無明顯增長。

以上也僅僅是分頁查詢結果查看的問題,你需要寫入到Excel的話還需要考慮Excel寫入代碼的執行效率,這部分是很值得研究的。

Ⅷ asp如何實現內容分頁

我就說7點:
在微軟的ASP編程體系中,ADO對象的建立,使得從網頁訪問資料庫成為一件易事,特別是ADO的

Recordset對象使得控制數據的輸出顯示更為方便、自由。而在Visual InterDev6.0(以下簡稱VI6.0)中,

由於Script Object Model(以下簡稱SOM)、Design-Time Control(以下簡稱DTC)以及Data Environment

Object Model(以下簡稱DEOM)等對象模型的引入,使網頁對資料庫的訪問設計顯得更為方便。

因為主題方面的原因,關於資料庫的連接,下文只給出代碼和簡要注釋,而把重點放在如何利用

Recordset對象(或控制項)實現數據記錄的分頁顯示方面。根據我的理解,分頁顯示的關鍵就在於對ADO的

Recordset對象或DTC(設計時控制項)的Recordset控制項的屬性和方法的熟練把握上。

這七種分頁顯示的武器概括起來說分四類:

第一、二種我暫取名叫「純ASP法」,這也是國內的ASP網站上用得最多的方法,它們的區別僅在實現

技巧的不同。這兩種方法的實現最易理解,用到的對象概念也最少,對開發環境的要求也最低(只要記事

本就行)。可以說,這兩種方法的實質還是CGI的編程思想,只是在程序中引入了ADO對象而已。

第四、五種暫取名叫「SOM的DHTML法」。這兩種方法要求在VI6.0的環境下,利用微軟提出的腳本

象模型(Script Object Model)和DHTML中Table對象的與資料庫綁定的新特性(許多書和文章只介紹了

DHTML的CSS特性在樣式設計中的運用而忽略介紹其數據綁定特性),實現在客戶端控制翻頁。但它要求用

戶的瀏覽器必須是支持DHTML,如:Microsoft Internet Explorer 4.0及以上的版本。

第六種暫取名叫「SOM伺服器端法」。要求在VI6.0的環境下開發,它利用微軟提出的腳本對象模型(

Script Object Model)中的幾個DTC控制項:Recordset、PageObject、Grid等在伺服器端(客戶端)實現翻

頁控制。這是一種激動人心的、全新的編程方法,它把網頁看成對象(這種對象模型和傳統的DOM----

document object model是有區別的:DOM只能控制客戶端,而SOM可控制伺服器端和客戶端),它真正實現

了網頁的面向對象編程。但遺憾的是,也許是我個人能力有限,這種技術我個人認為還不是很成熟,比如

,與瀏覽器的結合還不是很好,這將在後文詳細說明。

第七種暫取名叫「DEOM法」。它也是利用了VI6.0中建立的數據環境對象模型(Data Environment

Object Model)建立Recordset對象。這也是在網頁編程上比較少見的新方法,與SOM模型相比,自有它的

優點,這將在後文詳述。

在後面所舉的所有例子源代碼,都可以直接拷貝使用,你甚至可以不懂其原理,只要把其中的粗斜體

字部分換成相應自己的資料庫名或欄位名就可以了。

在開始詳細介紹各種分頁方法前,讓我們先創建一個資料庫:用Office97中的access自創一個

Employee.mdb,其中建一個表emp,只設三個欄位:emp ID,last name和first name。為什麼這么簡單,

是因為我們關心的是怎樣處理recordset的結果。

第一種:參數直接代入法

這種方法是用手工建立Recordset對象,利用其pagesize(每頁指定顯示記錄數),pagecount(總頁

碼數)和absolutepage(當前頁碼數)屬性來控制分頁的輸出。分頁採用<href>直接帶頁碼參數的方法

來控制翻頁。網頁的名字為emp1.asp。源代碼如下:

<%//建立與employee.mdb資料庫的連接。
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=employee.mdb"
//建立emp表的Recordset對象實例rs。
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "emp", conn, 3

PageSize = 10 //pagesize屬性指定了每頁要顯示的記錄條數
Page = CLng(Request("Page")) 』string型轉化為long型
If Page < 1 Then Page = 1
If Page > rs.PageCount Then Page = rs.PageCount
If Page <> 1 Then
Response.Write "<A HREF=emp1.asp?Page=1>第一頁</A>�"
Response.Write "<A HREF=emp1.asp?Page=" & (Page-1) & ">上一頁</A>�"
End If
If Page <> rs.PageCount Then
Response.Write "<A HREF=emp1.asp?Page=" & (Page+1) & ">下一頁</A>�"
Response.Write "<A HREF=emp1.asp?Page="&rs.PageCount & ">最後一頁</A>�"
End If
Response.write"頁碼:" & Page & "/" & rs.PageCount & "</font>"
//每一頁的顯示
//顯示表頭
Response.Write "<CENTER><TABLE BORDER=1>"
Response.WRITE "<TR><TD>" & rs.Fields("emp ID").Name & "</TD>"
Response.WRITE "<TD>" & rs.Fields("last name").Name & "</TD>"
Response.WRITE "<TD>" & rs.Fields("first name").Name & "</TD></TR>"
//循環顯示每條記錄
rs.AbsolutePage = Page //把頁碼賦給absolutepage屬性從而知當前頁的首條記錄號
For iPage = 1 To rs.PageSize //
Response.WRITE "<TR><TD>" & rs.Fields("emp ID").Value & "</TD>"
Response.WRITE "<TD>" & rs.Fields("first name").Value & "</TD>"
Response.WRITE "<TD>" & rs.Fields("last name").Value & "</TD></TR>"
rs.MoveNext
If rs.EOF Then Exit For
Next
Response.Write "</TABLE></CENTER>"%>

第二種:表單傳送參數法

這種方法在創建Recordset對象時與第一種相同,只是在翻頁控制時,採用<input>和case語句配合

來實現翻頁。網頁的名字為:emp2.asp。此方法在編程邏輯上有個缺點:就是在按過「上頁」或「下頁」

鈕後,再在瀏覽器上按刷新按鈕時,會自動翻頁。源代碼如下:

if Pagenum = "" Then Pagenum = 1 //從第一頁開始顯示
//建立資料庫連接和Recordset對象實例rs。
與第一種方法相同,此處略過。

RS.Pagesize = 10 』 設置一頁中顯示的記錄條數為10條
// 確定翻頁的動作
Select Case Request("NAV")
Case ""
session("Pagenum") = 1
case "First" 』 First Record
session("Pagenum") = 1
case "Prev" 』 Previous Record
if session("Pagenum") > 1 then
session("Pagenum") = session("Pagenum") - 1
End If
case "Next" 』 Next Record
if session("Pagenum")< RS.PageCount then
session("Pagenum") = session("Pagenum") + 1
End if
case "Last" 』 Last Record
session("Pagenum") = RS.PageCount
End Select
RS.Absolutepage = Clng(session("Pagenum")) //確定當前頁的第一條記錄號
// 顯示當前頁
同第一種方法,此處略過。
// Nav 翻頁按鈕設置
<form method="GET" action="emp2.asp">
<input type="submit" name="NAV" Value="首頁">
<input type="submit" value="上頁" name="NAV">
<input type="submit" value="下頁" name="NAV">
<input type="submit" value="末頁" name="NAV"></form>

第三種:用Grid控制項設計分頁

所有的方法中,這種方法最容易。你只需拖DTC中的Recordset控制項和Grid控制項到asp網頁中就行了。

而且,你還能選擇是在伺服器平台還是在客戶端平台控制翻頁。缺點就是你必須用它給定的格式顯示,而

不能自己自由控製表格的顯示格式。

方法如下:

在VI6.0中建一個工程emp.vip。再在工程中添加一個asp網頁:emp3.asp。

第一步:選VI6.0菜單條上的「add data connect…」,按開發工具的導航提示,你就可以很容易地

建立與Employee.mdb資料庫的連接。從DTC工具欄中拖一個Recordset控制項到網頁中,並設置其屬性。具體

如圖:

當你拖控制項到網頁中時,VI6.0會自動提示你「是否使用Scripting object model」,按yes。

第三步:從DTC工具欄中拖一個Grid控制項到網頁中,然後單擊滑鼠右鍵,設置其屬性,如:選在第二

步中創建的Recordset控制項名,選擇emp表中的欄位,每頁顯示多少條記錄以及顯示格式等。非常簡單方便

,只要照著導航提示做就行了。

第四種:DHTML法一。

數據記錄顯示在一個HTML表中。它利用DHTML中表的數據綁定特性來控制記錄的分頁顯示。缺點就是

你的翻頁方法將被限制為一種特定的方式:只能「上頁」和「下頁」而不能「首頁」和「末頁」。由於是

在客戶端控制翻頁,所以,這種和第五種方法是速度最快的,但遺憾的是它只能在支持DHTML的瀏覽器上

使用。

在DHTML中,<TABLE>的DATASRC屬性可使表格綁定到一個數據源,另一個屬性DATAPAGESIZE可指定

一頁一次顯示的記錄數。

我們來看下面的例子:

第一步:拖Recordset控制項到新建的網頁emp4.htm中,設置其屬性,方法同第三種,此處略。

第二步:輸入下面的代碼:

<TABLE ID="Table1" DATASRC="#Recordset1_RDS" DATAPAGESIZE=5> //假定前面設定Recordset控制項名

為Recordset1。每頁顯示5條記錄。
<THEAD>
<TH ALIGN="left" WIDTH=150>Emp ID</TH> //輸出表頭
<TH ALIGN="left" WIDTH=200>Last Name</TH>
<TH ALIGN="left" WIDTH=200>First Name</TH>
</THEAD>
<TR>
<TD><DIV DATAFLD="Emp ID"></DIV></TD> //輸出表內容
<TD><DIV DATAFLD="Last Name"></DIV></TD>
<TD><DIV DATAFLD="First Name"></DIV></TD>
</TR>
</TABLE>

第三步:然後,增加一對DTCs Button按鈕控制項來做翻頁導航,一個命名為「btnPrevious」(上一頁

),一個命名為「btnNext」(下一頁)。它們相應的腳本如下:

<SCRIPT LANGUAGE=VBScript>
Function btnPrevious_onclick()
Table1.previousPage()
End Function

Function btnNext_onclick()
Table1.nextPage()
End Function
</SCRIPT>

第五種:DHTML法二

這種方法是對第四種方法的完善。採用手工編寫腳本的方法,使我們能做「首頁」,「末頁」翻頁導

航按鈕,並能確定每條記錄的位置(記錄號)。由於篇幅的關系,我在下面只介紹一個具體例子,並給出

簡要說明。其它關於DHTML和Recordset控制項的一些屬性和方法請讀者自行參照相關書籍。這里需要提請注

意的是,Recordset控制項與第一、二種方法中介紹的ADO的Recordset對象有些不同:Recordset控制項沒有直

接給出pagesize和pagecount等屬性,需要用下面介紹的方法來計算。

第一步:拖Recordset控制項到新建的網頁emp5.htm中,名字為Recordset1,設置其屬性,方法同第三

種,此處略。

第二步:定義三個全局變數和編寫Recordset1的ondatasetcomplete(數據設置完成時)腳本。

Dim gCurrentPageNumber //當前頁號
Dim gMaxPageNumber //最大頁數
Dim gRecordsPerPage //每頁顯示記錄數
gRecordsPerPage = 5 // 設置每頁顯示記錄數為5條記錄。

Function Recordset1_ondatasetcomplete()
totalRecordCount = Recordset1.getCount() //總的記錄條數
gMaxPageNumber = Int(totalRecordCount / gRecordsPerPage) //獲得最大頁數
If (totalRecordCount Mod gRecordsPerPage) > 0 then
gMaxPageNumber = gMaxPageNumber + 1
End If
End Function

第三步:創建翻頁導航按鈕。

Function btnFirst_onclick() 』 翻到首頁
gCurrentPageNumber = 1
DisplayData()
End Function

Function btnPrevious_onclick() 』 翻到上一頁
if gCurrentPageNumber > 1 Then
gCurrentPageNumber = gCurrentPageNumber - 1
DisplayData()
End If
End Function

Function btnNext_onclick() 』 翻到下一頁
if gCurrentPageNumber < gMaxPageNumber Then
gCurrentPageNumber = gCurrentPageNumber + 1
DisplayData()
End If
End Function

Function btnLast_onclick() 』翻到末頁
gCurrentPageNumber = gMaxPageNumber
DisplayData()
End Function

第四步:編寫顯示每一頁的函數。其中使用了許多DHTML的屬性和方法,請讀者自行參考相關書籍。

Sub DisplayData()
startRecord = ((gCurrentPageNumber - 1) * gRecordsPerPage) + 1 //計算每一頁開始顯示的記錄號

數(位置,第幾條)
rowCtr = 1
lblPageNumber.innerHTML = gCurrentPageNumber & "/" & gMaxPageNumber
For recordPtr = startRecord To (startRecord + gRecordsPerPage - 1) //循環顯示一頁的各條記錄
If recordPtr > Recordset1.getCount() Then //顯示空表
Table1.rows(rowCtr).cells(0).innerHTML = "<P> </P>"
Table1.rows(rowCtr).cells(1).innerHTML = "<P> </P>"
Table1.rows(rowCtr).cells(2).innerHTML = "<P> </P>"
Table1.rows(rowCtr).cells(3).innerHTML = "<P> </P>"
Else //具體顯示每一頁
Recordset1.moveAbsolute(recordPtr) //移動記錄指針。
empID = Recordset1.fields.getValue("emp ID")
empLName = Recordset1.fields.getValue("first name")
empFName = Recordset1.fields.getValue("last name")

Table1.rows(rowCtr).cells(0).innerText = recordPtr 』 Counter
Table1.rows(rowCtr).cells(1).innerText = empID
Table1.rows(rowCtr).cells(2).innerText = empLName
Table1.rows(rowCtr).cells(3).innerText = empFName
End If
rowCtr = rowCtr + 1
Next
End Sub

另外,我們還需要在window對象的onload事件中編寫如下腳本:

For rowCtr = 1 to gRecordsPerPage
Table1.insertRow(rowCtr) 』 插一新列
For cellCtr = 0 to 3
Table1.rows(rowCtr).insertCell()
Next
Next

第六種:伺服器端控制翻頁方法。

如果我們在伺服器端對數據進行分頁形成HTML語句後再輸出到客戶端,就不會存在瀏覽器不支持

DHTML的問題了。可是用伺服器端法使得我們每次翻頁時,都得讓Recordset控制項重新產生一次,因此速度

肯定要比用DHTML的方法慢。但如果伺服器足夠快的話,這點慢客戶是察覺不到的。

下面的例子中,我將介紹一個新的DTC控制項:PageObject。這個控制項使被指定的網頁成為一個網頁對

象,用戶在此網頁的伺服器腳本中組織的子程序和函數可被看作是該網頁對象的方法。它提供了管理狀態

信息的一種先進的方法:網頁對象有一些屬性(變數),用戶可以定義這些屬性的生存期。因為以上這些

特性,使我們在編制翻頁的腳本時非常方便。

但這種方法的缺點是:當你按了「上頁」或「下頁」按鈕後,再瀏覽器上的按刷新按鈕,網頁會自動

翻頁。另外,如果按了瀏覽器上的「回退」按鈕後,再按翻頁按鈕,可能會出現一次亂翻。這都是因為網

頁對象屬性(全局變數)造成的。

第一步:拖Recordset控制項到新建的網頁emp6.asp中,名字為Recordset1,設置其屬性,方法同第三

種,此處略。

第二步:拖PageObject控制項到網頁中,取名叫emplist。然後右鍵單擊此控制項打開屬性頁並設置

MaxPageNumber,RecordsPerPage,CurrrentPageNumber三個屬性(全局變數)。VI6.0可用get和set方法

來讀寫它們的值,具體用法請查閱相關資料。

第三步:編寫Recordset1的ondatasetcomplete事件。

Function Recordset1_ondatasetcomplete()
recordsPerPage = 5
empList.setRecordsPerPage(recordsPerPage)//設置網頁對象每頁記錄條數屬性為5
totalRecordCount = Recordset1.getCount()//獲得記錄集的總條數
mpn = Int(totalRecordCount / recordsPerPage) //計算出mpn為總頁數
If (totalRecordCount Mod recordsPerPage) > 0 then
mpn = mpn + 1
End If
empList.setMaxPageNumber(mpn)
End Function

第四步:拖四個button控制項到網頁中,編寫翻頁控制腳本。我們主要是通過改變網頁對象的

CurrentPageNumber屬性的值來實現翻頁。

Function btnFirst_onclick()』 翻到首頁
empList.setCurrentPageNumber(1)
End Function

Function btnPrevious_onclick()』 翻到上一頁
cpn = empList.getCurrentPageNumber()
if cpn > 1 Then
empList.setCurrentPageNumber(cpn - 1)
End If
End Function

Function btnNext_onclick()』 翻到下一頁
cpn = empList.getCurrentPageNumber()
if cpn < empList.getMaxPageNumber() then
empList.setCurrentPageNumber(cpn + 1)
End If
End Function

Function btnLast_onclick() 』 翻到末頁
empList.setCurrentPageNumber( empList.getMaxPageNumber() )
End Function

為保證首次進入該頁時,顯示的是第一頁,我們還得編寫該網頁對象的onEnter事件。

Function empList_onEnter()
If empList.firstEntered Then
empList.setCurrentPageNumber(1)
End If
End Function

第五步:編寫顯示每一頁的腳本。

<HR><TABLE BORDER=0><TR>//顯示表頭
<TH ALIGN="left" WIDTH=35></TH>
<TH ALIGN="left" WIDTH=150>Emp ID</TH>
<TH ALIGN="left" WIDTH=200>Last Name</TH>
<TH ALIGN="left" WIDTH=200>First Name</TH></TR>
<%
pageNumber = empList.getCurrentPageNumber()//計算翻頁所需的各種參數,同DHTML法二
recordsPerPage = empList.getRecordsPerPage()
startRecord = ((pageNumber - 1) * recordsPerPage) + 1
lastRecord = Recordset1.getCount()
For recordPtr = startRecord To (startRecord + recordsPerPage - 1)%>
<%If Recordset1.EOF = True Then%>
<TR>
<TD> </TD>
<TD> </TD>
<TD> </TD>
<TD> </TD>
</TR>
<%Else%>
<%Recordset1.moveAbsolute(recordPtr)%>
<TR>
<% If recordPtr <= lastRecord Then %>
<TD><%=recordptr%></TD>
<%Else%>
<TD> </TD>
<% End If %>
<TD><%=Recordset1.fields.getValue("emp ID")%></TD>
<TD><%=Recordset1.fields.getValue("last name")%></TD>
<TD><%=Recordset1.fields.getValue("first name")%></TD>
</TR>
<%End If%>
<%Next%>
</TABLE><HR>

第七種:Data Environment Object Model(數據環境對象模型)法

Data Environment對象模型把ADO對象模型及它的對象----「Connection」,「Command」,

「Recordset」,「Field」以及「Parameter」對象----抽象到一個更加容易的表單中。Data

Environment Object Model把命令顯露為方法。用戶可以調用這些方法,這些方法會執行這些命令並返回

所得到的記錄集。關於DEOM對象模型詳細資料請參考相關書籍。我們來看下面網頁emp7.asp的例子:

第一步:在VI6.0的「project Explorer」窗口中的工程項目上右擊滑鼠並從彈出式菜單選擇「Add

Data Connection」。根據VI給出的導航提示建立一個到資料庫的連接之後,用戶就添加了一個實現從ASP

應用程序訪問資料庫的數據命令。同時,你將會在「Project Explorer」窗口中的global.asa文件下方看

到一個「Data Environment」對象。

第二步:右擊「Data Environment」對象然後從彈出式菜單中選擇「Add Data Command」選項,添加

一個數據命令Command1。根據VI6.0的導航提示,你可以在Command1 Properties彈出窗口的Genetal頁中

選SQL Statement,輸入:select * from emp。按OK返回。

第三步:你創建了這個數據命令後,就已經為該Data Environment對象創建了一個方法,然後就可以

從腳本中調用這個方法,而且該方法將會給用戶返回一個記錄集。

thisPage.createDE() //在SOM模式下,thisPage表示當前網頁對象,createDE()方法創建了DE對象。
DE.Command1//執行DE對象的命令,後面可代參數,做有條件查詢時很有用。
Set rs=DE.rsCommand1//DE.rscommand1使得rs對象完全等同於一個ADO的Recordset對象。

第四步:因為rs為ADO對象,所以,以下的實現翻頁代碼完全參照以上介紹的幾種方法,此處略過。

其它還有如FrontPage2000的資料庫導航中實現的方法等,因與本主題無關,此處略。

綜上所述,前面介紹的每種方法都包含了很多新的技術,由於篇幅的關系,無法深入。本文只是想通

過實現翻頁這一具體的例子來介紹ASP網頁編程的多種方法;讓大家親身體驗一下VI6.0在編制網頁中的強

大功能;了解和熟悉微軟在網頁編程中提出的ADO、DHTML、DTC控制項、SOM對象模型和DEOM對象模型的使用

方法;希望能給大家在編制網頁時提供更多的選擇和參考。

熱點內容
我的世界如何把材質包放進伺服器 發布:2025-01-12 16:11:14 瀏覽:56
使用hmailserver搭建郵件伺服器 發布:2025-01-12 16:05:43 瀏覽:809
ps3游戲下載解壓 發布:2025-01-12 15:55:46 瀏覽:596
視頻點播伺服器搭建區域網 發布:2025-01-12 15:46:44 瀏覽:88
unit長安豪華版有哪些配置 發布:2025-01-12 15:45:05 瀏覽:85
資料庫表的分區 發布:2025-01-12 15:39:29 瀏覽:369
u點家庭伺服器網關設置有什麼用 發布:2025-01-12 15:33:15 瀏覽:153
王者歸來java 發布:2025-01-12 15:27:13 瀏覽:68
安卓手機為什麼卡又發熱 發布:2025-01-12 15:23:18 瀏覽:571
如何驗證root密碼是否正確 發布:2025-01-12 15:23:15 瀏覽:592