快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

澳门银河误乐城BB电子网_集报网



绪论

在ASP法度榜样利用中常常有一个义务便是在一个分页款式中显示数据库的查询结果。比如,当处置惩罚大年夜量的记录内容时,应该一次只显示10个项目,这样就会使造访者应用这些信息更轻易些。收集上已经有许多文章示范了多种对数据库查询结果进行分页的措施,此中较好的文章包括:

应用存储历程对数据库记录进行分页

数据库分页样本代码

应用GetRows对记录进行分页

然则所有这些文章先容的措施都是在办事器端进行分页处置澳门银河误乐城BB电子网惩罚的。举例来说,要是有30条数据库记录,我们盼望一次显示10笔记录。当用户哀求第一页数据时,ASP页面就提取前10笔记录并将它们发送给客户。当用户已经作好筹备可以阅览下面10笔记录时,他就点击一个链接,这时ASP页面就被从新装载,经由过程查询字符串通报进来一个新的页面值,ASP页面将掏出第11条到20笔记录,并将它们发给用户。

本文中我们将把这全部处置惩罚历程移植到客户端。当用户联机查看数据时,这30个记录将整个以客户端JavaScript 数组的形式发送到客户机上。别的,附加的客户端JavaScript代码认真显示第1到第10笔记录,并且链接到后面或者前面的记录集。当点击这些链接时,将履行客户端JavaScript代码,新的数据会显示出来。因为这些都是在客户端发生的,是以只有在页面第一次被装载时才必要与Web办事器联系,从而省失办事器与客户端间的数据通报耗损,无疑大年夜大年夜地前进了利用法度榜样的机能。

所必要的客户端脚本

要实现在客户端显示分页的数据库记录,ASP页面应该天生什么样的客户端脚本呢?犹如前面所述,我们必要创建一个客户端数组。由于我们筹备在一个HTML表格中显示数据库记录,那么就要创建一个HTML数组,大概用它来显示一个HTML TABLE行(<tr><td> Database Value </td></tr>)。这个数组中将包孕所有我们盼望容许用户翻阅的数据库元素。

我们还必要一个客户真个JavaScript函数以显示这些数组值的子集。应用这个函数,我们可以显示前N 个记录;当用户点击一个链接时,就可以显示后面(或前面) N个记录。也便是说,这个函数认真客户端分页。

着末,我们还必要一些措施在不更新页面的环境下来动态改变一个HTML页面的显示。这可以经由过程DHTML(动态HTML)来实现。要实现这个目的,我们必要在聚积所有输出的地方创建一个HTML DIV标记,然后应用客户端JavaScript代码在这个DIV标记中动态改动内容。关于应用DHTML的更多信息,请涉猎动态HTML入门及跨浏览器DHTML教程.

创建一个分页类

要记着,这里举例的全部利用法度榜样只包括一个ASP页面。当这个ASP页面被造访时,它将创建履行记录分页必要的所有客户端JavaScript代码。为简化这个历程,我澳门银河误乐城BB电子网创建了一个VBScript类来处置惩罚这个功能。应用这个类的时刻,开拓职员只需将他盼望在造访者的Web浏览器长进行分页的记录集通报进来即可。关于类的应用,请涉猎在VBScript中应用类。

我将这个类命名为dhtmlGetRows,它包孕两个属性和一个措施。两个属性是:

1、 RecsPerPage:确定每一页显示若干个记录。

2、 THString:经由过程一个HTML表格显示这个进行了分页的结果;这个属性容许你为表格的标题指定一个字串。

单一的措施是GenerateHTML(RecordsetObject),它为分页利用法度榜样返回完备的HTML:客户端JavaScript代码和必要的DIV 标记。这个措施只必要一个参数RecordsetObject,它应该是一个记录集工具,此中添补了你盼望在一个分页款式中显示的数据库数据。

这个类的代码相称长,并且大年夜部分代码都只是返回客户真个JavaScript代码。下面是类的代码:

<%

Class dhtmlGetRows

'奸淫奸淫* PRIVATE MEMBER VARIABLES 奸淫奸淫奸淫*

Private iRecsPerPage

Private strTHString

'奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫*

'奸淫奸淫奸淫奸淫 Initialize Event 奸淫奸淫奸淫奸淫*

Private Sub Class_Initialize()

iRecsPerPage = 10 'assign a default value

End Sub

'奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫*

'奸淫奸淫奸淫奸淫 PROPERTY LET/GET 奸淫奸淫奸淫奸淫*

Public Property Let THString(strValue)

'WordStr all apostrophes with \'

strTHString = WordStr(strValue, "'", "\'")

End Property

Public Property Get THString()

THString = strTHString

End Property

Public Property Let RecsPerPage(iValue)

If iValue > 0 and IsNumeric(iValue) then

iRecsPerPage = CInt(iValue)

End If

End Property

Public Property Get RecsPerPage()

RecsPerPage = iRecsPerPage

End Property

'奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫*

'奸淫奸淫奸淫奸淫奸淫* METHODS 奸淫奸淫奸淫奸淫奸淫奸淫

Public Function GenerateHTML(objRS)

'Begin by getting an array of the data

Dim aValues

aValues = objRS.GetRows()

'Find the value of rows and columns

Dim iCols, iRows

iCols = UBound(aValues, 1)

iRows = UBound(aValues, 2)

Dim strOutput

'Display the initial script block

strOutput = "<script language=""javascript"">" & vbCrLf & _

"var tableRow = new Array(" & iRows & ");" & vbCrLf & vbCrLf

Dim iLoop, iColLoop, strTmp

For iLoop = 0 to iRows

strOutput = strOutput & "tableRow[" & iLoop & "] = '<tr>"

For iColLoop = 0 to iCols

'Fix apostrophes

strTmp = WordStr(aValues(iColLoop, iLoop),"'", "\'")

'Remove carraige returns

strTmp = WordStr(strTmp, vbCrLf, "")

strOutput = strOutput & "<td>" & strTmp & "</td>"

Next 'iColLoop

strOutput = strOutput & "</tr>';" & vbCrLf

Next 'iLoop

'Init global varaibles and find out what browser the user is using

strOutput = strOutput & vbCrLf & vbCrLf & "var first = 0;" & vbCrLf & _

"var last = " & iRecsPerPage & ";" & vbCrLf & _

"var mynav;" & vbCrLf & "if (navigator.appName == ""Netscape"")" & _

vbCrLf & vbTab & "mynav = ""NS"";" & vbCrLf & _

"if (navigator.appName == ""Microsoft Internet Explorer"")" & _

vbCrLf & vbTab & "mynav 澳门银河误乐城BB电子网= ""IE"";" & vbCrLf & _

vbCrLf & "</script>" & vbCrLf & vbCrLf

'Now display the HTML table

strOutput = strOutput & vbCrLf & "<div id=""grid""> </div>" & vbCrLf & _

vbCrLf & vbCrLf & "<script language=""javascript"">" & vbCrLf

'Write the nav function

strOutput = strOutput & "function nav(iVal) {" & vbCrLf & _

"// do we want to move forward or backwards?" & vbCrLf & _

"if (iVal == 1) { " & vbCrLf & vbTab & "first += " & _

iRecsPerPage & ";" & vbCrLf & "last += " & iRecsPerPage & _

vbCrLf & "}" & vbCrLf & "else if (iVal == -1) { " & vbCrLf & vbTab & _

"first -= " & iRecsPerPage & ";" & vbCrLf & vbTab & "last -= " & _

iRecsPerPage & ";" & vbCrLf & "}" & vbCrLf & _

vbCrLf & vbCrLf & "var txt = '';" & vbCrLf & _

"txt += '<table border=""1"">';" & vbCrLf

'Do we need to add a TH string?

If Len(strTHString) > 0 then

strOutput = strOutput & "txt += '<tr>" & strTHString & "</tr>';" & vbCrLf

End If

strOutput = strOutput & "for (var iLoop = first; iLoop < last; iLoop++)" & vbCrLf & _

vbTab & "if (iLoop <= " & iRows & ") txt += tableRow[iLoop];" & vbCrLf & _

"txt += '</table>';" & vbCrLf & vbCrLf

'Now, show next/prev links if applicable

strOutput = strOutput & "if (first > 0) // show prev link" & vbCrLf & _

vbTab & "txt += '<a href=澳门银河误乐城BB电子网""javascript:nav(-1);"">Prev " & _

iRecsPerPage & "</a> ';" & vbCrLf & vbCrLf & _

"if (last <= " & iRows & ") // show next link" & vbCrLf & vbTab & _

"txt += '<a href=""javascript:nav(1);"">Next " & _

iRecsPerPage & "</a>';" & vbCrLf & vbCrLf

'Write out the new HTML content to the DIV tag

strOutput = strOutput & "// write out the the DIV tag depending on browser..." & vbCrLf & _

"if (mynav == ""NS"") {" & vbCrLf & vbTab & _

"document.layers['grid'].document.write(txt);" & vbCrLf & vbTab & _

"document.close();" & vbCrLf & "}" & vbCrLf & vbCrLf & _

"if (mynav == ""IE"")" & vbCrLf & vbTab & _

"document.all['grid'].innerHTML = txt;" & vbCrLf & vbCrLf & _

"}" & vbCrLf & vbCrLf

strOutput = strOutput & "nav(0);" & vbCrLf & "</script>"

GenerateHTML = strOutput

End Function

'奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫奸淫*

End Class

%>

在停止之前,我想要快速地解释一下如何在一个ASP页面中应用这个类。因为这个类只包孕一个措施,是以应用这个类相称简单。你所必要做的便是创建并添补一个记录集工具,然后创建一个类的例示,并应用Response.Write输出objClassInstance.GenerateHTML(objRS)的值。

<!--#include file="dhtmlGetRows.class.asp"-->

<%

'Create and populate a Recordset

Dim objRS, objConn, strSQL

Set objConn = Server.CreateObject("ADODB.Connection")

objConn.Open "DSN=MyDSN"

strSQL = "SELECT TOP 25 ViewCount, Description " & _

"FROM tblFAQ ORDER BY ViewCount DESC"

Set objRS = objConn.Execute(strSQL)

'Create an instance of the dhtmlGetRows class

Dim objPagedResults

Set objPagedResults = new dhtmlGetRows

objPagedResults.THString = "<th>Views</th><th>FAQ Question</th>"

Response.Write objPagedResults.GenerateHTML(objRS)

'Clean up...

Set objPagedResults = Nothing

objRS.Close

Set objRS = Nothing

objConn.Close

Set objConn = Not澳门银河误乐城BB电子网hing

%>

以上的代码片段假定dhtmlGetRows类可以在一个办事器端包孕文件dhtmlGetRows.class.asp中应用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: