表单post提交查询数据库调用存储过程实现分页功能

表单post提交查询数据库中的数据,调用存储过程实现分页功能,但是点击第二页页面刷新后就没有post过去前面输入的值,页数是通过get方式传值的,没有结果产生,怎么解决?... 表单post提交查询数据库中的数据,调用存储过程实现分页功能,但是点击第二页页面刷新后就没有post过去前面输入的值,页数是通过get方式传值的,没有结果产生,怎么解决?? 展开
 我来答
塔雨筠ZP
2016-09-04 · TA获得超过431个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:180万
展开全部
首先要知道分页显示数据需要哪些参数,包括总共有多少条数据的参数dataCount,每页显示多少条数据的参数pageSize,总共有多少页数的参数pageCount,当前页数(页码)的参数pageIndex。

获取总共多少条数据的参数dataCount非常简单,执行Sql语句“select count(*) from test”就可以拿到dataCount值了,还有一个非常简单的参数就是当前页数(页码)pageIndex默认就是1。
每页显示多少条数据根据网页显示量来设定,假设网页一页显示10,那么pageSize就是10,有dataCount和pageSize值,总共有多少页数也就可以获得了,pageCount=dataCount/pageSize,通过这样计算页数方式获得的数据量一定小于实际的页数,这里就需要用到取顶函数pageCount=1.0*dataCount/pageSize。

关键就是如何通过准备的参数获取数据,还需要用到Sql Server2005及以上版本的数据库才有的给数据库表数据查询时增加序号的函数,这是因为我们存放在数据库的数据没有连续自动增长的编号,借助函数row_number()可以通过按某个字段排序设定序号,方便获取数据准确。
比较两条Sql语句“select * from test”和“select *,row_number() over(order by Test1) as '序号' from Test”查询数据进行比较就会发现在查询结果中会增加一个通过字段Test1排序而产生的一个序号,并且这个序号是连续自动增长的。

接下来创建存储过程,指定参数就可以了。
create proc P_Test--创建存储过程P_Test
@pageSize int,--每页数据条数
@pageIndex int,--当前页数(页码)
@pageCount int output--总的页数,因为需要显示页数,因此是个输出参数
as
declare @datacount int--总数据条数
select @datacount=count(*) from test--获得总数据条数值并赋给参数
set @pageCount=ceiling(1.0*@datacount/@pageSize)--获得总页数,并赋给参数
--接下来是获得指定页数据
select * from
(select *,row_number() over(order by Test1) as num from test) as temp
where num between @pageSize*(@pageIndex-1)+1 and @pageSize*@pageIndex
iFonHen
2016-09-04 · TA获得超过132个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:96.8万
展开全部

方案一: 

如果你需要传递的参数比较少,那么直接将所有的参数都通过get方式传递即可(程序接受post和get两种方式传参)


方案二:

给翻页连接绑定一个点击事件,并阻止默认事件.搜索表单中添加一个

<input type="hidden" name="page" value="1">

点击事件功能实现,将上面的input[name="page"]的值改成当前所点击连接的page值,然后再提交搜索表单

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式