文章的上一篇和下一篇导航

当浏览文章时,希望在文章下面有一个导航,就是上一篇和下一篇的功能。可从下三张截图看到效果:

 

 

 

要SQL查询语句前,就须把上一篇和下一篇的文章ID找出来,下面的SQL语句有些字段已经省略。

ExpandedBlockStart.gif View Code
SELECT  [ ArticleId ], [ Subject ],
    ( SELECT  MAX( [ ArticleId ]FROM  [ dbo ]. [ Article ]  AS a1  WHERE a1. [ ArticleId ]  < a. [ ArticleId ]AS  [ PrevArticleId ],
    ( SELECT  MIN( [ ArticleId ]FROM  [ dbo ]. [ Article ]  AS a1  WHERE a1. [ ArticleId ]  > a. [ ArticleId ]AS  [ NextArticleId ]    
     FROM  [ dbo ]. [ Article ]  AS a

 

执行结果:

 

数据库方面完成了,接下来在asp.net实现,可以首先创建一个用户控件:

ArticleNavigation.ascx:

ExpandedBlockStart.gif View Code
<% @ Control Language = " VB "  AutoEventWireup = " false "  CodeFile = " ArticleNavigation.ascx.vb "  Inherits = " SiteControls_ArticleNavigation "   %>
上一篇: < asp:HyperLink  ID ="HyperLinkPrev"  runat ="server"  Target ="_blank" ></ asp:HyperLink >  < br  />
下一篇: < asp:HyperLink  ID ="HyperLinkNext"  runat ="server"  Target ="_blank" ></ asp:HyperLink >

 

ArticleNavigation.ascx.vb:

ExpandedBlockStart.gif View Code
Imports System.Data
Imports Insus.NET

Partial  Class SiteControls_ArticleNavigation
     Inherits System.Web.UI.UserControl
     Dim objArticle  As  New Article()

     Private _PrevArticleId  As  String
     Private _NextArticleId  As  String

     Public  WriteOnly  Property PrevArticleId  As  String
         Set(value  As  String)
            _PrevArticleId = value
         End  Set
     End Property

     Public  WriteOnly  Property NextArticleId  As  String
         Set(value  As  String)
            _NextArticleId = value
         End  Set
     End Property

     Protected  Sub Page_Load(sender  As  Object, e  As EventArgs)  Handles  Me.Load
        Data_Binding()
     End Sub

     Private  Sub Data_Binding()
         If  String.IsNullOrEmpty(_PrevArticleId)  Then
             Me.HyperLinkPrev.Text =  " "
         Else
             Dim objPrevDataRow  As DataRow = objArticle.GetArticleByPrimaryKey(_PrevArticleId).Rows( 0)
             Me.HyperLinkPrev.Text = objPrevDataRow( " Subject ")
             Me.HyperLinkPrev.NavigateUrl =  " ~/ArticleView.aspx?ID= " & _PrevArticleId
         End  If

         If  String.IsNullOrEmpty(_NextArticleId)  Then
             Me.HyperLinkNext.Text =  " "
         Else
             Dim objNextDataRow  As DataRow = objArticle.GetArticleByPrimaryKey(_NextArticleId).Rows( 0)
             Me.HyperLinkNext.Text = objNextDataRow( " Subject ")
             Me.HyperLinkNext.NavigateUrl =  " ~/ArticleView.aspx?ID= " & _NextArticleId
         End  If
     End Sub

End Class

 

在文章浏览的aspx中,用户控控件需要传入前一篇的文章ID和下一篇的文章ID,下面的PrevArticleIdNextArticleId两个都是用户控件的public的属性。 

ExpandedBlockStart.gif View Code
  < uc1:ArticleNavigation  ID ="ArticleNavigation1"  runat ="server"  PrevArticleId ='<%#  Eval("PrevArticleId")% >'
                NextArticleId=' <% Eval ( " NextArticleId " ) %>' />

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值