.net中上一篇下一篇的实现

本文介绍了一种使用SQL存储过程来实现商品列表中上一件和下一件商品的高效检索方法。通过创建存储过程并结合.NET代码,在UI层实现了商品上下页的无缝跳转,提高了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:sql中新建存储过程(注意跟进自己的表修改表名和排序条件
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
2:DAL层表的DAO代码中新加
/// <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;
}

3:ui层中HTML代码

ContractedBlock.gifExpandedBlockStart.gifView Code
<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>

图片名称自己修改

4:后台代码如下(model.id为自己目前商品的ID)

ContractedBlock.gifExpandedBlockStart.gifView Code
//上一页
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;
}

转载于:https://www.cnblogs.com/luqingsong/archive/2011/02/18/1957689.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值