无限动态参数在ASP分页时自动记录所有参数名的解决方法

前述:
1。 需要分页的文件:a.asp--------该文件中调用page_turn.asp中的分页显示函数:<%call select_page(xx.xx...)%>

2。 分页显示文件page_turn.asp --------这里包含一个带参数的显示函数: private sub select_page(page_num,total),这两个参数是起码要传递的参数,分别表示当前第几页和记录集的总页数。

其中a.asp包含page_turn.asp,<!--#include file=page_turn.asp-->

正文:
我在做asp分页时会碰到一个问题,当分页地址中带有除了页数(pagenum)的其它参数时,通过调用call自定义的分页函数传递可变参数的方式手动添加需要的参数( call selectpage(page_num,total,产品大类a,产品小类b)),然后把每个多出的参数手动的加到selectpage函数的连接中
比如:
< href ="xxx.asp?pagenum=2&产品大类名=变量a&产品小类名=变量b" > 下一页 </ a >

如果都是同样的参数名和数量到好办,但是如果参数不定,是可变化的就只能在新建一个分页函数 select_page2()了,不灵活很死板,所以我们要通过以下方法来获取URL值,只要将多出的参数ID和值都赋给一个变量A,即可通用于所有文件(如:select_page(page_num,total,A))。

如何知道当前页的URL,特别是URL一般都含有参数,若无参数,则只用“Request.ServerVariables("SCRIPT_NAME")”即可,但含参数的URL如何得到呢?经过网上查询和研究,用如下函数实现:


 1获取当前Url参数的函数
 2Private Function GetUrl()
 3Dim ScriptAddress,M_ItemUrl,M_item
 4ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME")) '取得当前地址
 5M_ItemUrl = ""
 6If (Request.QueryString <> "") Then
 7 ScriptAddress = ScriptAddress & "?"
 8 For Each M_item In Request.QueryString
 9 If M_item = "page_num" Then Exit for '此处的作用就是过滤掉Page_num这个页次的参数(该参数是在page_turn.asp中自行设置的,根据个人设定而变),否则每次翻页都会叠加这个参数,虽然不影响功能,但总归不太好吧~~
10 If InStr(page,M_Item)=0 Then
11 M_ItemUrl = M_ItemUrl & M_Item &"="& Server.URLEncode(Request.QueryString(""&M_Item&"")) & "&"
12 End If
13 Next
14Else
15ScriptAddress = ScriptAddress & "?"
16end if
17GetUrl = ScriptAddress & M_ItemUrl
18End Function


将以上代码保存为任意的asp文件,然后在需要实现翻页功能的文件里包含一下该文件,并在翻页文件里将得到的地址赋给一个变量,这里就叫url吧,<%url=GetUrl()%>

好了,最后再在翻页显示的函数中加入参数url,<%call select_page(page_num,total,url)%>。

搞定,撤退!

你可能感兴趣的:(无限动态参数在ASP分页时自动记录所有参数名的解决方法)