当前位置: 首页 > news >正文

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

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

 

 

 

要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 " ) %>' />

 

 

 

相关文章:

  • Go语言写Web 应用程序
  • 注册表操作技巧及键值类型的判断
  • 迎接“云”时代的全面到来
  • QMenu,QT的菜单添加
  • Android开发基本篇(二)
  • Java的主要特性?
  • 为WP7添加动态Tile
  • [zz]Linux性能测试工具Lmbench介绍和使用说明
  • ACL配置
  • Ubuntu下使用虚拟机安装xp系统
  • [转]一个老工程师给年轻人的忠告
  • Oracle官网提供的虚拟机下载,方便测试和开发环境
  • CentOS6.2配置php-cgi错误解决办法
  • 对不含数据源的DataGridView实现自定义排序
  • 明晰单元测试
  • Android框架之Volley
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Lsb图片隐写
  • MySQL QA
  • nginx 负载服务器优化
  • React系列之 Redux 架构模式
  • 翻译--Thinking in React
  • 白色的风信子
  • 《天龙八部3D》Unity技术方案揭秘
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 仓管云——企业云erp功能有哪些?
  • #pragma data_seg 共享数据区(转)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (9)STL算法之逆转旋转
  • (function(){})()的分步解析
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (笔试题)合法字符串
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (六)激光线扫描-三维重建
  • (一)Dubbo快速入门、介绍、使用
  • (转)母版页和相对路径
  • (轉)JSON.stringify 语法实例讲解
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net 4.0并行库实用性演练
  • .NET 的程序集加载上下文
  • .net 发送邮件
  • .net 后台导出excel ,word
  • .net 中viewstate的原理和使用
  • .NET中的Exception处理(C#)
  • :“Failed to access IIS metabase”解决方法
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [.net] 如何在mail的加入正文显示图片
  • [100天算法】-实现 strStr()(day 52)
  • [1127]图形打印 sdutOJ
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [bzoj 3534][Sdoi2014] 重建