asp net 编程问题 实现下一篇 和上一篇效果

首先是access数据库,有一个名为news的表,里面有三个字段,分别为id,classid 和name 其中id为主键,classid可以重复 现在有以下数据: id classid name 1 1 我的测试1 2 2 我的测试2 3 2 我的测试3 4 1 我的测试4 5 2 我的测试5 6 3 我的测试6 7 1 我的测试7 8 2 我的测试8 问题来了,我要实现上一篇和下一篇的效果,假设现在显示的是第5条新闻如下: 我的测试5 实现以下: 上一篇:我的测试3 下一篇:我的测试8 因为“我的测试5”的classid是2 所以要求上一篇和下一篇的classid也是2 这个很简单。你在查询的时候要查3次,第一次查询的是当前的记录,第2,3次查询的分别是上一条和下一条记录。 所以说应该是3条语句。 select * from news where id=id select top 1 * from news where id > id and classid=classid order by id asc select top 1 * from news where id < id and classid=classid order by id desc 由于ascss没存储过程,所以你可能要先把当前的记录查出来,取出这条记录的分类id,然后才能写出下面的2条查询语句。如果是sqlserver的话,我就直接在存储过程里实现这个功能。 *******************************************************************************************

 

asp.net实现 下一篇 和上一篇 效果C#完整代码及存储过程  

2011-01-19 00:32:34|  分类: C#学习|举报|字号 订阅

 
 

C# 代码

//在页面上放2个Label  设置next1和up1 .

private void BindNewsUpNextData(int nNewsID)
    {
        News news = new News();
        //上一篇
        SqlDataReader recup1 = news.GetSingleNewsUp(nNewsID);
        if (recup1.Read())
        {
            this.next1.Text = "下一篇:" + " <a href=shownews.aspx?newsid=" + recup1["NewsID"].ToString() + ">" + recup1["title"].ToString() + "</a>";
        }
        else
        {
            this.next1.Text = "下一篇:" + "已经没有了";   
        }
        recup1.Close();
        
        //下一篇
        SqlDataReader recnext1 = news.GetSingleNewsNext(nNewsID);
        if (recnext1.Read())
        {
            this.up1.Text = "上一篇:" + " <a href=shownews.aspx?newsid=" + recnext1["NewsID"].ToString() + "> " + recnext1["title"].ToString() + "</a>";
        }
        else
        {
            this.up1.Text = "上一篇:" + "已经没有了";
        }
        recnext1.Close();
    }

SQL server 2005存储过程:

PROCEDURE [dbo].[Pr_News_Single_Next_Get]
(
 @NewsID int
)
AS
 
SELECT

   xw_News.NewsID,xw_News.title
    
FROM
   xw_News

WHERE

NewsID=(select min(NewsID) from xw_News where NewsID>@NewsID and CategoryID=

(select CategoryID from xw_News where NewsID=@NewsID))

 

PROCEDURE [dbo].[Pr_News_Single_Up_Get]
( @NewsID int
)
AS
 
SELECT

   xw_News.NewsID,xw_News.title
    
FROM
   xw_News

WHERE

NewsID=(select max(NewsID) from xw_News where NewsID<@NewsID and CategoryID=

(select CategoryID from xw_News where NewsID=@NewsID))

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。