set
ANSI_NULLS
ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: 小黑
-- Create date: 2011-2-17
-- Description: 根据ID获取上一页下一页的存储过程
-- =============================================
ALTER PROCEDURE [ dbo ] . [ proc_PrevorNextpro ]
@proid int , -- 表id
@str nvarchar ( 20 ) -- prev 则是上一件 next则是下一件
AS
BEGIN
declare @rowid int
select @rowid = rowid from (
select ROW_NUMBER() over ( order by createdate desc ) as rowid, * from shop_product
) as a where a.id = @proid
if @str = ' prev '
set @rowid = @rowid - 1
else
set @rowid = @rowid + 1
select * from (
select ROW_NUMBER() over ( order by createdate desc ) as rowid, * from shop_product
) as a where a.rowid = @rowid
END
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: 小黑
-- Create date: 2011-2-17
-- Description: 根据ID获取上一页下一页的存储过程
-- =============================================
ALTER PROCEDURE [ dbo ] . [ proc_PrevorNextpro ]
@proid int , -- 表id
@str nvarchar ( 20 ) -- prev 则是上一件 next则是下一件
AS
BEGIN
declare @rowid int
select @rowid = rowid from (
select ROW_NUMBER() over ( order by createdate desc ) as rowid, * from shop_product
) as a where a.id = @proid
if @str = ' prev '
set @rowid = @rowid - 1
else
set @rowid = @rowid + 1
select * from (
select ROW_NUMBER() over ( order by createdate desc ) as rowid, * from shop_product
) as a where a.rowid = @rowid
END
///
<summary>
/// 根据商品ID获取上一件或者下一件商品
/// </summary>
/// <param name="proid"> 商品ID </param>
/// <param name="str"> 上一件:prev,下一件:next </param>
public xh.shop.Model.product GetPrevOrNextProModel( int proid, string str)
{
string proc = " proc_PrevorNextPro " ;
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand(proc);
db.AddInParameter(dbCommand, " proid " , DbType.Int32, proid);
db.AddInParameter(dbCommand, " str " , DbType.String, str);
xh.shop.Model.product model = null ;
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
if (dataReader.Read())
{
model = ReaderBind(dataReader);
}
}
return model;
}
/// 根据商品ID获取上一件或者下一件商品
/// </summary>
/// <param name="proid"> 商品ID </param>
/// <param name="str"> 上一件:prev,下一件:next </param>
public xh.shop.Model.product GetPrevOrNextProModel( int proid, string str)
{
string proc = " proc_PrevorNextPro " ;
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = db.GetStoredProcCommand(proc);
db.AddInParameter(dbCommand, " proid " , DbType.Int32, proid);
db.AddInParameter(dbCommand, " str " , DbType.String, str);
xh.shop.Model.product model = null ;
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
if (dataReader.Read())
{
model = ReaderBind(dataReader);
}
}
return model;
}
3:ui层中HTML代码


<
asp:HyperLink
ID
="hlprev"
runat
="server"
>
< img border ="0" height ="19" src ="images/ansh.gif" width ="47" />
</ asp:HyperLink >
< asp:HyperLink ID ="hlnext" runat ="server" >
< img border ="0" height ="19" src ="images/anx.gif" width ="47" />
</ asp:HyperLink >
< img border ="0" height ="19" src ="images/ansh.gif" width ="47" />
</ asp:HyperLink >
< asp:HyperLink ID ="hlnext" runat ="server" >
< img border ="0" height ="19" src ="images/anx.gif" width ="47" />
</ asp:HyperLink >
图片名称自己修改
4:后台代码如下(model.id为自己目前商品的ID)


//
上一页
Model.product m_prev = new xh.shop.DAL.product().GetPrevOrNextProModel(model.id, " prev " );
if (m_prev != null )
{
hlprev.NavigateUrl = " pro.aspx?id= " + m_prev.id;
}
else
{
hlprev.Visible = false ;
}
// 下一页
Model.product m_next = new xh.shop.DAL.product().GetPrevOrNextProModel(model.id, " next " );
if (m_next != null )
{
hlnext.NavigateUrl = " pro.aspx?id= " + m_next.id;
}
else
{
hlnext.Visible = false ;
}
Model.product m_prev = new xh.shop.DAL.product().GetPrevOrNextProModel(model.id, " prev " );
if (m_prev != null )
{
hlprev.NavigateUrl = " pro.aspx?id= " + m_prev.id;
}
else
{
hlprev.Visible = false ;
}
// 下一页
Model.product m_next = new xh.shop.DAL.product().GetPrevOrNextProModel(model.id, " next " );
if (m_next != null )
{
hlnext.NavigateUrl = " pro.aspx?id= " + m_next.id;
}
else
{
hlnext.Visible = false ;
}