asp分页基础类XDownPage2.0只支持oracle,而 2.10已经能够支持sqlserver了。本例将演示XDownPage2.10对于sqlserver数据库的分页方法。
1 , 分页程序代码
请详见另一篇文章:
2 , conn.asp(数据库连接相关的程序)
'
==================================================
'
数据库访问
'
==================================================
'
建立数据库连接
dim
conn
'
数据库连接对象
set
conn
=
server.createobject(
"
ADODB.CONNECTION
"
)
sub
openConn
connstr
=
"
Provider=sqloledb;Data Source=127.0.0.1;Initial Catalog=it;User Id=it_manage;Password=it_manage;
"
conn.open connstr
end sub
'
清除数据库连接
sub
CloseConn
conn.Close()
set
conn
=
nothing
end sub
'
关闭打开的记录集
sub
CloseRS(byref recordset)
recordset.close()
set
recordset
=
nothing
end sub
'
获得当前虚拟目录的名字
function
getRoot()
url
=
Request.ServerVariables(
"
URL
"
)
url
=
right
(url,
len
(url)
-
1
)
getRoot
=
mid
(url,
1
,
instr
(url,
"
/
"
)
-
1
)
end function
'
---------------- 数据库排序 start ---------------------------
sImageDir
=
"
/
"
&
getRoot()
&
"
/images/
"
'
图片路径
upOrderFlag
=
"
<img border=0 src='
"
&
sImageDir
&
"
sort_asc.gif'>
"
'
升序排列显示图标
downOrderFlag
=
"
<img border=0 src='
"
&
sImageDir
&
"
sort_desc.gif'>
"
'
降序排列显示图标
'
获得当前连接的排序方向
function
getOrderDir(fn,ofn,oDir)
dim
tDir
tDir
=
"
desc
"
if
(
lcase
(fn)
=
lcase
(ofn))
then
if
(
lcase
(oDir)
=
"
asc
"
)
then
tDir
=
"
desc
"
else
tDir
=
"
asc
"
end
if
end
if
getOrderDir
=
tDir
end function
'
书写排序指示图标
function
writeOrderDir(fn,ofn,oDir)
dim
tDir
if
(
lcase
(fn)
=
lcase
(ofn))
then
if
(
lcase
(oDir)
=
"
asc
"
)
then
tDir
=
UpOrderFlag
else
tDir
=
downOrderFlag
end
if
end
if
writeOrderDir
=
tDir
end function
'
添加排序列头
sub
WriteOrderHeader(pHeaderTitle,pOrderField,tOrderField,tOrderDir)
Response.Write
"
<span οnclick=""gotoOrder('
"
&
pOrderField
&
"
','
"
&
getOrderDir(pOrderField,tOrderField,tOrderDir)
&
"
')"" class='noticetitle' style='width:90%;cursor:default'>
"
&
pHeaderTitle
&
"
"
&
writeOrderDir(pOrderField,tOrderField,tOrderDir)
&
"
</span>
"
end sub
'
---------------- 数据库排序 end ---------------------------
3 , main.asp(主程序)
<!-- #include file="../../inc/conn.asp"
-->
<!--
#include file="../../inc/pagination.asp"
-->
<%
...
'故障类别管理
'writer:northsnow
'create date :051211
%>
<
script
language
="javascript"
>
...
//执行查询前将查询条件写到隐藏表单
function query()
...{
var oFormHidden=document.frmHidden;
if(!oFormHidden) return false;
oFormHidden.currentpage.value="";
oFormHidden.flag.value="query";
oFormHidden.err_type_name.value=frmList.err_type_name.value;
oFormHidden.err_type_code.value=frmList.err_type_code.value;
oFormHidden.submit();
}
//重置查询条件
function myreset()
...{
frmList.err_type_name.value="";
frmList.err_type_code.value="";
}
//执行动态排序
function gotoOrder(uOrderField,uOrderDir)
...{
frmHidden.currentpage.value="1";
frmHidden.flag.value="query";
frmHidden.orderField.value=uOrderField;
frmHidden.orderDir.value=uOrderDir;
frmHidden.submit();
}
}
</
script
>
<%
...
'on error resume next
'获取参数
dim err_type_name,err_type_code
dim currentpage,flag,pagesize,rsTotalCount,orderDir,orderField
currentpage=trim(request.form("currentpage"))
div_p=trim(request("div_p"))
flag=trim(request("flag"))
pagesize=trim(request("pagesize"))
rsTotalCount=trim(request("rsTotalCount"))
orderDir=trim(Request("orderdir"))
orderField=trim(Request("orderfield"))
err_type_code=trim(request("err_type_code"))
err_type_name=trim(request("err_type_name"))
%>
<
span
class
="titlestyle"
>
>>
故障类别管理
</
span
>
<!--
下面是查询框
-->
<
div
align
=center
><
span
id
="qSpan"
>
<
fieldset
style
="width:100%;padding:'2px 2px'"
align
="center"
class
="border"
>
<
legend
class
="border"
align
=right
style
="border:0px"
>
<
a
href
="#"
onclick
="javascript:query()"
tabindex
="1"
>
查询
</
a
>
|
<
a
href
="#"
onClick
="javascript:myreset()"
>
重置
</
a
>
</
legend
>
<
table
width
="100%"
align
="center"
ID
="Table1"
>
<
tr
><
form
name
="frmList"
action
="#"
method
="post"
ID
="Form1"
>
<
td
valign
="middle"
align
="center"
>
<
table
width
="100%"
border
="0"
cellspacing
="0"
cellpadding
="0"
ID
="Table2"
>
<
tr
>
<
td
align
="center"
width
="50%"
>
类别代码:
<
input
name
="err_type_code"
type
="text"
class
="line"
maxlength
="4"
value
="<%=err_type_code%>"
ID
="Text1"
></
td
>
<
td
align
="center"
width
="50%"
>
类别名称:
<
input
name
="err_type_name"
type
="text"
class
="line"
value
="<%=err_type_name%>"
size
="22"
ID
="Text2"
></
td
>
</
tr
>
</
table
>
</
td
>
</
tr
></
form
>
</
table
>
</
fieldset
></
span
>
<
table
width
=100%
align
=center
border
="0"
cellpadding
="0"
cellspacing
="0"
ID
="Table3"
>
<
form
name
="manForm"
ID
="Form2"
><
tr
><
td
align
=center
valign
=top
>
<
table
border
="0"
width
="100%"
cellspacing
="0"
cellpadding
="0"
ID
="Table4"
>
<%
...
'定义记录集对象
set rs=server.CreateObject("adodb.recordset")
rs.CursorLocatinotallow=3 '定义记录集的属性
if pagesize="" then pagesize=15 '定义默认页大小
'//形成查询条件串
strOptinotallow="where 1=1"
if err_type_code<>"" then
strOptinotallow=strOption & " and err_type_code='"&err_type_code&"'"
end if
if err_type_name<>"" then
strOptinotallow=strOption & " and err_type_name like '%"&err_type_name&"%'"
end if
'形成排序串
strOrder=""
if orderField<>"" then
strOrder=" order by " & orderField
if orderDir<>"" then strOrder=strOrder & " " & orderDir
end if
if strOrder="" then strOrder=" order by err_type_code asc"
'连接数据库
Call OpenConn()
Set mypage=new xdownpage '创建分页类对象
mypage.getcnotallow=conn '得到数据库连接
mypage.pagesize=pagesize '设置每一页的记录条数据为5条
mypage.totalRecordCount=rsTotalCount '传递总记录数,分页的时候不用每次都去查一次
'创建查询语句 (这个是sqlserver与oracle特别的地方
'参数讲解: 表或视图,查询的列的列表,条件串,排序串,关键字字段
mypage.CreateSql_MSSQL "err_type","*",strOption,strOrder,"err_type_code"
'生成分页和导航表单
mypage.GetSubmitForm="frmHidden"
Response.write(mypage.GetSubmitForm1())
'执行查询并返回结果
set rs=mypage.getrs() '返回Recordset
%>
<
tr
height
="28"
>
<
td
align
="left"
width
="400"
valign
="top"
>
<
table
cellspacing
="1"
class
="tableBorder1"
cellpadding
=0
bordercolordark
=#FFFFFF
width
="100%"
bordercolorlight
=#014E4B
ID
="Table5"
>
<
tr
height
="25"
>
<
td
valign
="center"
align
="left"
width
="20%"
class
="noticetitle"
background
="../../images/topbg.gif"
nowrap
>
<%
...
WriteOrderHeader "类别代码","err_type_code",OrderField,OrderDir '写列头,并使该列可以实现单击排序功能%></td>
<td valign="center" align="left" width="70%" class="noticetitle" background="../../images/topbg.gif" nowrap>
<%WriteOrderHeader "类别名","err_type_name",OrderField,OrderDir %>
</
td
>
</
tr
>
<%
...
i=1
do while not rs.EOF %>
<
tr
<% if i mod 2
=0
then %
>
class="tr2"
<%
...
else
%>
class="tr1"
<%
...
end if
%>
>
<
td
height
="23"
align
="center"
valign
="top"
>
<%
=
rs(
"
err_type_code
"
)
%>
</
td
>
<
td
height
="23"
align
="center"
>
<%
=
FilterParam3(rs(
"
err_type_name
"
))
%>
</
td
>
<
td
height
="23"
align
="center"
>
</
tr
>
<%
...
i=i+1
rs.MoveNext
loop %>
</
table
>
</
td
>
</
tr
>
<
tr
><
td
colspan
=3
>
<%
...
mypage.showpage() '显示导航条%>
<%mypage.ShowPageSizeChange() '显示更改页大小的列表%></td></tr>
</table>
<td></tr></form><%
Rs.Close()
set rs=nothing
CALL CLOSECONN() %>
</
table
>
<!--
隐藏表单,用于页面导航和查询。是分页类完成分页必须的
-->
<
form
name
="frmHidden"
method
="get"
action
="#"
ID
="Form3"
>
<
input
type
="hidden"
name
="sys_handle"
value
="<%=sys_handle%>"
ID
="Hidden1"
>
<
input
type
="hidden"
id
="div_p"
name
="div_p"
value
="<%=div_p%>"
>
<
input
type
="hidden"
name
="flag"
value
=""
ID
="Hidden7"
>
<
input
type
="hidden"
name
="pagesize"
value
="<%=pagesize%>"
ID
="1"
>
<
input
type
="hidden"
name
="currentpage"
value
="<%=currentpage%>"
ID
="Hidden8"
>
<
input
type
="hidden"
name
="rsTotalCount"
value
="<%=rsTotalCount%>"
ID
="2"
>
<
input
type
="hidden"
name
="orderField"
value
="<%=orderField%>"
ID
="Hidden9"
>
<
input
type
="hidden"
name
="orderDir"
value
="<%=orderDir%>"
ID
="Hidden10"
>
<
input
type
="hidden"
name
="err_type_name"
value
="<%=err_type_name%>"
ID
="Hidden12"
>
<
input
type
="hidden"
name
="err_type_code"
value
="<%=err_type_code%>"
ID
="Hidden13"
>
</
form
>
</
body
>
</
html
>