三层分页?

shishikunkun 2010-08-05 07:16:18
这是我的分页存储过程:

ALTER PROCEDURE page
@orderid nvarchar(50),--id
@tablename nvarchar(50),--表名
@term nvarchar(50)='*',--查询条件
@currentpage int,--当前页
@sort int,--1为desc 0为asc排序
@pagesize int,--每页记录
@rowcount int output,--总记录
@pagecount int output--总页数
AS
declare @sql nvarchar(200)
declare @sqlcount nvarchar(100)
declare @sqlsub nvarchar(200)
declare @totalcount nvarchar(200)
declare @temporderid nvarchar(50)

set @sqlcount='select @totalcount=count(*) from '+@tablename--得到总记录
exec sp_executesql @sqlcount,N'@totalcount int out',@rowcount output

if @term is null or @term=''
set @term='*'

if @orderid is null or @orderid=''
set @temporderid=''
else
begin
if @sort=0
set @temporderid='order by '+@orderid+' desc'
else
set @temporderid='order by ' +@orderid+' asc'
end

if @rowcount%@pagesize>0--计算总页数
set @pagecount=(@rowcount/@pagesize)+1
else
set @pagecount=@rowcount/@pagesize
--分页代码
set @sqlsub='SELECT ROW_NUMBER() OVER('+@temporderid+') as rowNUM,* FROM '+@tablename
set @sql= 'SELECT * FROM ('+@sqlsub+')as b where rowNUM BETWEEN' +str((@currentpage-1)*@pagesize+1)+' AND '+str(@currentpage*@pagesize)+' '+@temporderid
exec(@sql)
...全文
155 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shishikunkun 2010-08-05
  • 打赏
  • 举报
回复
怎么的调用,麻烦大家把代码写出来好吗?麻烦了
claymore1114 2010-08-05
  • 打赏
  • 举报
回复
在 后台 调用你写好的Bll 方法
shishikunkun 2010-08-05
  • 打赏
  • 举报
回复
就是在.aspx.cs后台不知道如何调用分页存储过程,
maomao90 2010-08-05
  • 打赏
  • 举报
回复
打个断点调试一下,报的是什么错呀,我觉得你代码没什么问题,不过,你返回的是DataTable,那么你绑定的字段必须与数据库中的字段对应,不然就会报错,如果返回的是LIST<T>,就是与模型层中类的属性名对应
天下如山 2010-08-05
  • 打赏
  • 举报
回复
你可以尝试用分页存储过程+aspnetpager控件 做分页 很好的,又简单。
闲游四疯 2010-08-05
  • 打赏
  • 举报
回复
<td><a href="del.aspx?id=<%#Eval("id") %>">删除</a></td>
这样两双引号没问题吗?用单\双引号区分
绑定不要直接eval 显示时比较慢 具体可以上网搜下
分页页码显示什么的 用楼上那吴旗娃分页控件 比较方便
其它要具体什么错误再说
wuyq11 2010-08-05
  • 打赏
  • 举报
回复
通过存储过程返数据到List<T>实体集
BLL操作实体
shishikunkun 2010-08-05
  • 打赏
  • 举报
回复
WEB下前台代码:
<asp:DataList ID="DataList1" runat="server" Width="474px">
<ItemTemplate>
<table>
<tr>
<td><%#Eval("id") %></td>
<td><%#Eval("name") %> </td>
<td><%#Eval("message") %></td>
<td><a href="del.aspx?id=<%#Eval("id") %>">删除</a></td>
<td><a href="update.aspx?id=<%#Eval("id") %>"> 修改</a></td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
当前<asp:Label ID="lblCurrent" runat="server"></asp:Label>页
总<asp:Label ID="lblPageCount" runat="server" ></asp:Label>页数/
共<asp:Label ID="lblRowCount" runat="server"></asp:Label>记录
<asp:HyperLink ID="hyFirst" runat="server">首页</asp:HyperLink>
<asp:HyperLink ID="hyPrev" runat="server">上一页</asp:HyperLink>
<asp:HyperLink ID="hyNext" runat="server">下一页</asp:HyperLink>
<asp:HyperLink ID="hyLast" runat="server">末页</asp:HyperLink>


请问后台怎么调用,我写总是出错!还是我写的方法有错?麻烦大家了
shishikunkun 2010-08-05
  • 打赏
  • 举报
回复
BLL下我这样写的:
 DAL.DET det = new DAL.DET();
public DataTable GetPage( string tablename, int currentpage, int rowcount, int pagesize, int pagecount, string term)
{
return det.GetPage(tablename, currentpage, rowcount, pagesize, pagecount, term);
}
shishikunkun 2010-08-05
  • 打赏
  • 举报
回复
在DAL下我写的代码:
/// <summary>
///
/// </summary>
/// <param name="procName">存储过程名</param>
/// <param name="param"></param>
/// <returns></returns>
public DataTable ExecuteDataTable(string procName, SqlParameter[] param)
{
SqlConnection conn = det.Getconn();
conn.Open();
DataTable dt = new DataTable();
SqlCommand comm = new SqlCommand(procName, conn);
comm.CommandType = CommandType.StoredProcedure;
if (param != null)
{
foreach (SqlParameter sqlparam in param)
{
comm.Parameters.Add(sqlparam);
}
}
SqlDataAdapter da = new SqlDataAdapter(comm);
da.Fill(dt);
comm.Parameters.Clear();
return dt;
}
/// <summary>
/// 调用存储过程分页
/// </summary>
/// <param name="id"></param>
/// <param name="tablename"></param>
/// <param name="currentpage"></param>
/// <param name="rowcount"></param>
/// <param name="pagesize"></param>
/// <param name="pagecount"></param>
/// <param name="term"></param>
/// <param name="sort"></param>
/// <returns></returns>
public DataTable GetPage(int id, string tablename, int currentpage, int rowcount, int pagesize, int pagecount, string term,int sort)
{
DataTable dtb = new DataTable();
SqlParameter[] sqlparameter ={

new SqlParameter("@orderid",SqlDbType.NVarChar,50),
new SqlParameter("@tablename",SqlDbType.NVarChar,50),
new SqlParameter("@currentpage",SqlDbType.Int,50),
new SqlParameter("@term",SqlDbType.NVarChar,50),
new SqlParameter("@pagesize",SqlDbType.Int),
new SqlParameter("@sort",SqlDbType.Int),
new SqlParameter("@rowcount",SqlDbType.Int),
new SqlParameter("@pagecount",SqlDbType.Int)
};
sqlparameter[0].Value = id;
sqlparameter[1].Value = tablename;
sqlparameter[2].Value = currentpage;
sqlparameter[3].Value = term;
sqlparameter[4].Value = pagesize;
sqlparameter[5].Value = 1;
sqlparameter[6].Direction = ParameterDirection.Output;
sqlparameter[7].Direction = ParameterDirection.Output;
dtb = ExecuteDataTable("page", sqlparameter);
rowcount = Convert.ToInt32(sqlparameter[6].Value);
pagecount = Convert.ToInt32(sqlparameter[7].Value.ToString());
return dtb;
}

}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧