打印本文 关闭窗口 |
|
| Asp组件中级入门与精通系列 | |
| 作者:龙卷风.NET 文章来源:csdn.net 点击数 更新时间:2006/4/22 23:09:04 文章录入:admin 责任编辑:admin | |
|
|
|
|
今天我们来看一下一个完整的数据封装的、带分页的例子 打开vb6,新建Activex Dll工程。工程名修改为fCom,类名修改为fZ8 创建两个组件事件:OnStartPage以及OnEndPage 代码如下: Option Explicit '************************************************** '作者:龙卷风 '功能:简单的可以定制的,完全封装的组件 '时间: '************************************************** '对象的声明 Dim MyResponse As Response Dim MyRequest As Request Dim myApplication As Application Dim myServer As Server Dim mySession As Session '私有变量 Private mPageSize As Long Private mstrSql As String '当组件被创建的时候会触发这个事件 Public Sub OnStartPage(myScriptingContent As ScriptingContext) '进行对象的实例化 Set MyResponse = myScriptingContent.Response Set MyRequest = myScriptingContent.Request Set myServer = myScriptingContent.Server Set myApplication = myScriptingContent.Application Set mySession = myScriptingContent.Session End Sub '当组件被销毁的时候触发这个事件 Public Sub OnEndPage() '销毁对象 Set MyResponse = Nothing Set MyRequest = Nothing Set myServer = Nothing Set myApplication = Nothing Set mySession = Nothing End Sub ‘显示Table Public Function ShowTable()
Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset
Dim i As Integer Dim j As Integer Dim intPage As Integer Dim intPageCount As Integer Dim strScriptName As String Dim intPos As Integer Dim intFieldCount As Integer
'得到路径 strScriptName = MyRequest.ServerVariables("Script_Name") intPos = InStrRev(strScriptName, "/") If intPos <> 0 Then strScriptName = Mid(strScriptName, intPos + 1) End If
If IsEmpty(MyRequest("page")) Then intPage = 1 Else intPage = CInt(MyRequest("page")) End If
On Error GoTo err
conn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Northwind;Data Source=localhost"
rs.Open mstrSql, conn, adOpenStatic, adLockReadOnly
'得到记录数 intFieldCount = rs.Fields.Count
'输出表格 MyResponse.Write "<table border=1 cellspacing=0 cellpadding=2>"
If Not rs.EOF Then rs.PageSize = mPageSize rs.AbsolutePage = intPage
'得到页数 intPageCount = rs.PageCount
'处理分页 If intPage < 1 Then intPage = 1 If intPage > intPageCount Then intPage = intPageCount
'输出表头 MyResponse.Write "<tr>" For i = 0 To intFieldCount - 1 MyResponse.Write "<th>" & rs(i).Name & "</th>" Next MyResponse.Write "</tr>"
'输出内容 For i = 1 To mPageSize If rs.EOF Then Exit For End If MyResponse.Write "<tr>" For j = 0 To intFieldCount - 1 MyResponse.Write "<td>" & rs.Fields(j).Value & "</td>" Next MyResponse.Write "</tr>" rs.MoveNext Next
'输出分页 MyResponse.Write "<tr>" If intPage <> 1 Then MyResponse.Write "<a href=" & strScriptName & "?page=1>[第一页]</a>" MyResponse.Write "<a href=" & strScriptName & "?page=" & intPage - 1 & " >[上一页]</a>" End If
If intPage <> intPageCount Then MyResponse.Write "<a href=" & strScriptName & "?page=" & intPage + 1 & ">[下一页]</a>" MyResponse.Write "<a href=" & strScriptName & "?page=" & intPageCount & ">[最后一页]</a>" End If
MyResponse.Write "页次:<FONT COLOR='Red'>" & intPage & "/ " & intPageCount & "</FONT>" MyResponse.Write "</tr>"
End If
MyResponse.Write "</table>"
'释放资源 If Not rs Is Nothing Then If rs.State = 1 Then rs.Close End If Set rs = Nothing End If
If Not conn Is Nothing Then If conn.State = 1 Then conn.Close End If Set conn = Nothing End If Exit Function err: MyResponse.Write err.Number & err.Description If Not rs Is Nothing Then If rs.State = 1 Then rs.Close End If Set rs = Nothing End If
If Not conn Is Nothing Then If conn.State = 1 Then conn.Close End If Set conn = Nothing End If End Function ‘定义属性 Public Property Get ShowPageSize() As Variant ShowPageSize = mPageSize End Property Public Property Let ShowPageSize(ByVal vNewValue As Variant) mPageSize = vNewValue End Property Public Property Get strSQL() As Variant strSQL = mstrSql End Property Public Property Let strSQL(ByVal vNewValue As Variant) mstrSql = vNewValue End Property 编译成Dll文件,系统自动会注册。 否则就手工注册 Regsvr 测试 打开visual interdev6.0,生成一个fz8.asp文件 <%@ Language=VBScript %> <HTML> <BODY> <% dim obj set obj=server.CreateObject("fcom.fz8") ‘每页显示的记录数 obj.ShowPageSize=10 ‘显示的sql语句 obj.strSQL="select customerid,companyname,contactname,contacttitle,address from customers" obj.ShowTable() %> </BODY> </HTML> 配置好虚拟目录,在ie中执行fc8.asp文件,可以看到
|
|
打印本文 关闭窗口 |