分页存储过程C# 代码
发布网友
发布时间:2022-04-24 06:19
我来回答
共4个回答
热心网友
时间:2022-04-08 09:02
(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)
end
1.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
以上是我以前面试前总结准备的资料,按照这个流程分页绝对能搞定,但你要是看不懂我就没办法了
热心网友
时间:2022-04-08 10:20
题目是什么意思我没有看明白,但是这个完全可以用AspNetPager控件实现。
热心网友
时间:2022-04-08 11:54
你是要存储过程做分页么? 要是的话加我Q吧。太长了 写不出来。我有代码。1521501777
热心网友
时间:2022-04-08 13:46
留下邮箱!我发你邮箱!