1.c# 分页代码
那个东西要自己写。
我写了一个,挺复杂的。
给你做参考吧。
<% //分页 int allWriteBackForumNum = AllDataWorkTitle.WriteBackFroumNum(forumTitleId); //得到全部回帖数量,分页用 int maxPageNum = allWriteBackForumNum / 10 + 1; if (allWriteBackForumNum % 10 == 0 && allWriteBackForumNum != 0) //如果回帖数量是10的倍数,减去最后那个空页 { maxPageNum = maxPageNum - 1; } Response.Write(" ");//输出写空格 Response.Write("共" + (allWriteBackForumNum - 1).ToString() + "楼"); //输出页数并且都加上链接而且页数多的话,显示部分(花线内) //************************************************************************************************************ Response.Write(" "); if (allWriteBackForumNum != 0 && maxPageNum <= 10) { for (int j = 1; j <= maxPageNum; j++) { if (j == pageNum) { Response.Write(" [" + j.ToString() + "] "); } else { string ee = "[" + j.ToString() + "]"; Response.Write(" " + ee + " "); } } Response.Write(""); } else if (maxPageNum > 10) { if (pageNum == 1) { for (int j = 1; j <= 10; j++) { if (j == pageNum) { Response.Write(" [" + j.ToString() + "] "); } else { string ee = "[" + j.ToString() + "]"; Response.Write(" " + ee + " "); } } string gg = ">>"; string ff = "。." + maxPageNum.ToString() + ""; Response.Write(" " + gg + " " + ff + " "); } else if (pageNum == maxPageNum) { string ff = "1。
."; string gg = "<<"; Response.Write(" " + ff + " " + gg + " "); for (int j = maxPageNum - 9; j <= maxPageNum; j++) { if (j == pageNum) { Response.Write(" [" + j.ToString() + "] "); } else { string ee = "[" + j.ToString() + "]"; Response.Write(" " + ee + " "); } } } else { string ff = "1。."; string gg = "<<"; Response.Write(" " + ff + " " + gg + " "); if (pageNum - 1 > 5 && maxPageNum - pageNum > 5) { for (int j = pageNum - 4; j <= pageNum + 6; j++) { if (j == pageNum) { Response.Write(" [" + j.ToString() + "] "); } else { string ee = "[" + j.ToString() + "]"; Response.Write(" " + ee + " "); } } } else if (pageNum - 1 <= 5) { for (int j = 1; j <= 10; j++) { if (j == pageNum) { Response.Write(" [" + j.ToString() + "] "); } else { string ee = "。
2.分页显示的SQL代码
大哥 我给你个我现有的存储过程吧(我嫌难得写) 是sqlserver数据库的希望对你有帮助。我用的是sqlserver2000 采用的是字符拼接,如果你是更高版本就不必了,不过更高版本同样支持字符拼接。create PROC [dbo].[sp_SelectLinkByTitle_Mtc_Links]
(
@pageSize int , --每页显示多少条
@pageIndex int, --当前页数
@Allcount int OUTPUT , --总行数
@Pagecount int output,--总页数
@typeid varchar(40),
@newstitle nvarchar(200)=null
)
AS
declare @sql nvarchar(2000)
declare @endcount int --这个是条件
declare @condition nvarchar(2000)
set @condition=''
if(@newstitle is not null)
begin
set @condition=' and linkSubject like ''%'+@newstitle+'%'''
end
------查询出我们的所有行数
declare @s nvarchar(2000)
SET @S = 'SELECT COUNT(*) AS C INTO TEMP FROM Mtc_Links as D where typeId='''+@typeid+''''+convert(nvarchar(500),@condition)
exec
sp_executesql @S
select @Allcount = C from [TEMP]
drop table [TEMP]
set @Pagecount=ceiling(convert(float,@Allcount)/@pageSize)
if(@pageIndex>@Pagecount)
begin
set @pageIndex=@Pagecount
end
set @endcount=@pageSize * @pageIndex
if(@pageSize * @pageIndex>@Allcount)
begin
set @endcount=@Allcount
set @pageSize=@Allcount%@pageSize
end
---------拼接我们的SQL语句
set @sql = 'select linkId, typeId, linkSubject, linkUrl,
createdDt, createdBy, isopen, linknum from (SELECT TOP '+convert(varchar(20),@pageSize)+'
linkId, typeId, linkSubject, linkUrl,
createdDt, createdBy, isopen, linknum
FROM (
SELECT TOP '+convert(varchar(20),@endcount)+' linkId, typeId, linkSubject, linkUrl,
createdDt, createdBy, isopen, linknum
FROM Mtc_Links where typeId='''+@typeid+''''+convert(nvarchar(500),@condition)+' order by linknum asc) as t order by linknum desc)
as r order by linknum asc 'exec
sp_executesql @sql 不懂的地方可以继续问满意的话随便给点分行么
3.c# 分页代码
写那么多有什么用 分页吗 给你个分页的sql语句 不就行了select top 20 * from userposts where(titleid not in (select top 10 titleid from userposts))上面的意思就是 取出20条内容 从第10条开始 也就是11-30条的内容你绑定数据的时候 传sql语句 就传这个 到时候 可以 count(*) 查出所有的行数 然后吧 top20 和 后面的 top10 写成变量 分页的时候传进去2个变量然后执行sql语句 数据结果绑定到控件 然后显示 想怎么分就怎么分了如果数据量少就用 gridview 自带的分页 方便(自带的分页是一次吧所有的数据都加载到内存中) 如果数据多就算了 只能用上面的sql语句了。
4.分页显示的SQL代码
大哥 我给你个我现有的存储过程吧(我嫌难得写) 是sqlserver数据库的希望对你有帮助。
我用的是sqlserver2000 采用的是字符拼接,如果你是更高版本就不必了,不过更高版本同样支持字符拼接。create PROC [dbo].[sp_SelectLinkByTitle_Mtc_Links]( @pageSize int , --每页显示多少条 @pageIndex int, --当前页数 @Allcount int OUTPUT , --总行数 @Pagecount int output,--总页数 @typeid varchar(40), @newstitle nvarchar(200)=null)AS declare @sql nvarchar(2000)declare @endcount int --这个是条件declare @condition nvarchar(2000)set @condition='' if(@newstitle is not null)begin set @condition=' and linkSubject like ''%'+@newstitle+'%'''end------查询出我们的所有行数declare @s nvarchar(2000)SET @S = 'SELECT COUNT(*) AS C INTO TEMP FROM Mtc_Links as D where typeId='''+@typeid+''''+convert(nvarchar(500),@condition)execsp_executesql @Sselect @Allcount = C from [TEMP]drop table [TEMP]set @Pagecount=ceiling(convert(float,@Allcount)/@pageSize)if(@pageIndex>@Pagecount)begin set @pageIndex=@Pagecountendset @endcount=@pageSize * @pageIndexif(@pageSize * @pageIndex>@Allcount)begin set @endcount=@Allcount set @pageSize=@Allcount%@pageSizeend ---------拼接我们的SQL语句set @sql = 'select linkId, typeId, linkSubject, linkUrl, createdDt, createdBy, isopen, linknum from (SELECT TOP '+convert(varchar(20),@pageSize)+' linkId, typeId, linkSubject, linkUrl, createdDt, createdBy, isopen, linknum FROM ( SELECT TOP '+convert(varchar(20),@endcount)+' linkId, typeId, linkSubject, linkUrl, createdDt, createdBy, isopen, linknum FROM Mtc_Links where typeId='''+@typeid+''''+convert(nvarchar(500),@condition)+' order by linknum asc) as t order by linknum desc) as r order by linknum asc 'execsp_executesql @sql 不懂的地方可以继续问满意的话随便给点分行么。
5.分页存储过程C# 代码
(1)size每页记录数(2)currIndex当前页(3)count总页数 分页的存储过程:alter proc Select_Contradict @qtbid varchar(5),@qsid varchar(5),@cid varchar(5),@title varchar(50),@htime varchar(50),@size varchar(5),@currindex varchar(5) as begin declare @str varchar(700) declare @where varchar(700) set @where='' set @str='select top '+@size+' tt.* from (select qtb.name qtbname,qs.name qsname,c.* from Contradict c inner join QuestionTypeBie qtb on c.qtbid=qtb.qtbid inner join QuestionState qs on c.qsid=qs.qsid) tt where 1=1' if(@qtbid <> 0) set @where=@where+' and tt.qtbid=convert(int,'+char(39)+@qtbid+char(39)+')' if(@qsid <> 0) set @where=@where+' and tt.qsid=convert(int,'+@qsid+')' if(@cid <> 0) set @where=@where+' and tt.id=convert(int,'+@cid+')' if(@title <> '') set @where=@where+' and tt.title like '+CHAR(39)+'%'+@title+'%'+CHAR(39) if(@htime <> '') set @where=@where+' and DATEDIFF(DD,tt.HappenTime,'+char(39)+@htime+char(39)+')=0' --以上if为查询条件 set @currindex=@size*(@currindex-1) --筛选掉当前页之前的记录,因top后不能加括号,故这样写 set @where=@where+' and tt.id not in(select top '+@currindex+' tt.id from (select qtb.name qtbname,qs.name qsname,c.* from Contradict c inner join QuestionTypeBie qtb on c.qtbid=qtb.qtbid inner join QuestionState qs on c.qsid=qs.qsid) tt order by tt.id)' --分页的筛选条件 set @where=@where+' order by tt.id' --此order by 的字段需和前面的一致,否则分页效果不对 set @str=@str+@where print @str exec (@str) end1.select top (1)* from 表 where 条件 and id not in(select top (1)*((2)-1) id from 表 where 条件 order by 排序的字段) order by 排序的字段2.在展示数据页面添加(1)(2)(3)属性 private int Size = 5; public int currindex { set { ViewState["currindex"] = value; } get { return Convert.ToInt32(ViewState["currindex"]); } } public int count { set { ViewState["count"] = value; } get { return Convert.ToInt32(ViewState["count"]); } }3.查询总记录数给临时变量temp//总个数 private int CountTemp() { return new ContradictManager().GetCount(); }4.获取总页数 private int CountSize() { return count = (CountTemp() / Size) + (CountTemp() % Size > 0 ? 1 : 0); }5.绑定数据,dataSource=查询方法((1),(2))6.设置上一页,下一页,(2)需要单击时++或--,执行3,4,5,6 if((2)>=(3)) //下一页不可用 if((2)<=1) //上一页不可用7.页面首次加载事件:(2)=1;执行3,4,5,6 以上是我以前面试前总结准备的资料,按照这个流程分页绝对能搞定,但你要是看不懂我就没办法了。
6.帮我写个分页的程序
<%@ Import Namespace="System.Data"%> <%@ Import Namespace="System.Data.SqlClient" %>