要SQL查询语句前,就须把上一篇和下一篇的文章ID找出来,下面的SQL语句有些字段已经省略。 ![]() 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: ![]() <%@ 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: ![]() 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,下面的PrevArticleId和NextArticleId两个都是用户控件的public的属性。 ![]() <uc1:ArticleNavigation ID="ArticleNavigation1" runat="server" PrevArticleId='<%# Eval("PrevArticleId")%>' NextArticleId='<%# Eval("NextArticleId")%>' />
|
|
来自: 悟静 > 《.net和asp.net》