构造当前页面完成的URL

简单的技巧,以前没有这么用过。

可以这样构造当前页面完成的URL:

“http://” & Request.ServerVariables(“HTTP_HOST”) & Request.ServerVariables(“PATH_INFO”) &”?” & Request.ServerVariables(“QUERY_STRING”)

取得了这个字符串后,我们在写有关“主/明细表”程序的时候,当在明细表页面经过了多次操作后,最后仍然可以回到主表中,查询参数和页码都保留了。当然如果明细表操作在新开窗口中进行,那就不用我在这儿叽里咕噜了。

具体怎么实现呢?例如我们有学生列表,通过班级或者年龄等条件查询出来,并且翻到了中间页码。我们可以在页面顶端加上:

Response.Cookies(“MySite”)(“URL”)=”http://” & Request.ServerVariables(“HTTP_HOST”) & Request.ServerVariables(“PATH_INFO”) &”?” & Request.ServerVariables(“QUERY_STRING”)

把当前页面的URL写入Cookies中,在点击姓名到明细表,并且经过了编辑更新或者删除等等操作后,通过语句:

Response.Redirect(Request.Cookies(“MySite”)(“URL”))

禁止页面缓存

web程序中有时候更新非常频繁,这时候往往页面缓存会出来捣乱,让你分不清是否程序真实响应页面。

禁止页面缓存


<META http-equiv=Pragma content=no-cache> 
<META http-equiv=Cache-Control content=no-cache> 
<META http-equiv=Expires content=0> 

asp

<% Response.Expires = 0 %>

我试了一下,似乎不是百分百管用……都用上好了 🙂

command的返回值在recordset关闭后才能取得

前两天的那个cmd返回值无法获取的问题,我在《ASP3高级编程》中找到了答案。

command如果返回了查询结果集recordset,那么必须在recordset关闭以后才能取得返回值。

rs.close
returnValue = cmd.Parameters(“RETURN_VALUE”)

顺便说一句,那本书我已经买了很久了,但是从来没有仔细全部看过,都是遇到问题的时候查查而已,这样虽然很方便,但是看来有时候还是比较浪费时间的。

mssql分页存储过程

--列出所有新闻(分页参数 当前页数/每页记录数 返回记录总数)

CREATE PROC [dbo].[ProcListNews]
	@page INT,
	@pageSize INT
AS
	DECLARE @beginId INT, @endId INT, @pageBegin INT, @pageEnd INT, @xtmp INT, @count INT

	SELECT @count=(SELECT COUNT(*) countx FROM News )

	--声明游标
	DECLARE fastRead CURSOR SCROLL FOR SELECT ID FROM News ORDER BY PostTime desc

	OPEN fastRead

	SELECT @beginId=(@page-1)*@pageSize+1
	SELECT @endId = @beginId+@pageSize-1

	FETCH ABSOLUTE @beginId FROM fastRead INTO @pageBegin

	IF @endId > @count
		FETCH LAST FROM fastRead INTO @pageEnd
	ELSE
		FETCH ABSOLUTE @endId FROM fastRead into @pageEnd

	--切换大小 between语句中排在前位的必须是较小数字
	IF @pageBegin>@pageEnd
		BEGIN
			SELECT @xtmp=@pageBegin
			SELECT @pageBegin=@pageEnd
			SELECT @pageEnd=@xtmp
		END

	SELECT News.ID,Title,Content,Url,[Name] CategoryName,PostTime 
	FROM News JOIN NewsCategory c ON CategoryID=c.ID 
	WHERE News.ID BETWEEN @pageBegin AND @pageEnd ORDER BY PostTime DESC

	CLOSE fastRead
	DEALLOCATE fastRead
	RETURN @count
GO

asp代码是这样的

'获取新闻记录
set cmd = Server.CreateObject("ADODB.Command")

with cmd
	.ActiveConnection = ConnString
	.CommandType = adCmdStoredProc
	.CommandText ="ProcListNews"	
	.Parameters.Append .CreateParameter ("RETURN_VALUE",adInteger,AdParamReturnValue)
	.Parameters.Append .CreateParameter("@page",adInteger,,,page)
	.Parameters.Append .CreateParameter("@pageSize",adInteger,,,pagesize)
	set rsNews = .Execute
	allcount = .Parameters("RETURN_VALUE")
end with

其他的都正常,只是不知道为什么,allcount总是获取不到返回值……