比如数据库中有30条记录,是这样的表T1只有两个字段id userid
1 1
2 2
3 3
......
29 29
30 30全部显示的话select * from T1假如我要查询ID>10的,每页10条记录,这样的话就是分2页select * from T1 where id>10第一页应该显示
id userid
10 10
11 11
.......
20 20
第二页显示
id userid
21 21
22 22
.......
30 30查询出来第一页显示正确,但是第二页还是显示
id userid
10 10
11 11
.......
20 20
我想了一下,应该是查询条件没有传递过来
在asp中可以通过querystring来解决,我的做法就是将条件加在后面但是在ASP。NET中如何做呢,也要通过QUERYSTRING吗,但是我用的是GRIDVIEW要通过SESSION吗?还有没有其他的解决办法,越简单越好
1 1
2 2
3 3
......
29 29
30 30全部显示的话select * from T1假如我要查询ID>10的,每页10条记录,这样的话就是分2页select * from T1 where id>10第一页应该显示
id userid
10 10
11 11
.......
20 20
第二页显示
id userid
21 21
22 22
.......
30 30查询出来第一页显示正确,但是第二页还是显示
id userid
10 10
11 11
.......
20 20
我想了一下,应该是查询条件没有传递过来
在asp中可以通过querystring来解决,我的做法就是将条件加在后面但是在ASP。NET中如何做呢,也要通过QUERYSTRING吗,但是我用的是GRIDVIEW要通过SESSION吗?还有没有其他的解决办法,越简单越好
参数传递
page.aspx?pageindex=1
pageindex是当前页
<input id="pagenum" type="hidden" runat="server" value="">
这样写你可以在代码页中直接调用它。
pagenum.value=3 '设置页码
dim t as int32
t=pagenum.value '取页码值
我试过即使页面是以iframe形式嵌入其它页,页码读取也是正常的,如果是session就可能出问题。这是个人建议,你可以试一下。
@SqlStr NVARCHAR(4000), --查询字符串
@CurrentPage INT, --第N页
@PageSize INT --每页行数
AS
BEGIN
SET NOCOUNT ON
DECLARE @P1 INT, --P1是游标的id
@rowcount INT
EXEC sp_cursoropen @P1 OUTPUT,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
SELECT CEILING(1.0*@rowcount/@pagesize) AS 总页数--,@rowcount as 总行数,@currentpage as 当前页
SET @currentpage=(@currentpage-1)*@pagesize+1
EXEC sp_cursorfetch @P1,16,@currentpage,@pagesize
EXEC sp_cursorclose @P1
SET NOCOUNT OFF
END
http://blog.csdn.net/amandag/archive/2008/07/14/2646472.aspx
2.0分页都不用自己写代码..很方便.1.1我也不太懂,要写很多代码到网上搜索一下分页的代码吧,呵呵
gridview还是很好用的
只有gridview是可以分页的,不过也要自己写代码
其他如repeter,datalist==都要自己用存储过程来分页
要么就直接用aspnetpager....无敌的什么都好分....
GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
//重新绑定数据
}
后来感觉没什么不方便的,可能是偶做的东西小吧
{
int pagesize = 5;
int p = Request.QueryString("page");
bindPageData(p,pagesize);
}void bindPageData(int p,int pagesize)
{
string sqls="select top "+pagesize+" somefield from table ";
if (p!=1)
sqls += " where tableid not in (select top "+(p-1)*pagesize+" tableid from table order by tableid desc) ";
sqls+=" order by tableid desc ";
string pageCountsql = "select count(*) as total from table ";
setConn And Command (自已写...); DataTable dt = .....
Repeater.DataSource = dt ;
int pageCount = (.....) 计算总页数.
lbl.Text = setPages(p);
}function setPages(int p,int pageCount)
{
string strhtml = " ";
for (int i=1;i<=pageCount;i++)
{
str hrefStr = "";
if (i==p)
hrefStr = "<a href='url?page="+i+"'>[<font color=red>" + i + "</font></a> | ";
else
hrefStr = "<a href='url?page="+i+"'>[" + i + "</a> | ";
strhtml += hrefStr;
} return strhtml;
}
(@start int ,
@number int)
as
SET NOCOUNT ON
select top @number *
from Link
where ( id >all
(select top @start [ id]
from Link
order by id ))
order by idGO
@PageIndex int,--第几页
@PageSize int --每页几条记录
as
declare @RecordCount int,@PageCount int
select @RecordCount=count(*) from student
set @pagecount=ceiling(@RecordCount*1.0/@PageSize)
if @PageIndex>@pagecount
set @PageIndex = @pagecount-1 --last page
if @PageIndex <0
set @PageIndex = 0 --first page
select sqno,* from
(select sid,deptid,sno,sname,row_number() over (order by sid desc) as sqno from student) as s
where s.sqno > (@PageIndex*@PageSize) and s.sqno <= ((@PageIndex+1)*@PageSize)--exec page2005 10,20
也谢谢楼上的几位兄弟推荐AspNetPager!