本博文,教大家做一个轻量级的小型网站的导航条。
在网站的后台管理界面,就是可以管理这些导航内容。添加,删除,更新等,在后台能够预览到导航条效果。
做到信息存储,需要在数据库创建相关的表。对表进行操作,添加编辑等,需要运用存储过程。
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGO-- =============================================-- Author: Insus.NET-- Create date: 2013-07-20-- Description: Navigation bar table.-- =============================================CREATE TABLE [dbo].[NavigationBar]( [NavigationBar_nbr] [smallint] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](40) NOT NULL, [Url] [varchar](200) NULL, [CreateBy] [nvarchar](30) NOT NULL, [CreateDate] [datetime] NOT NULL, [UpdateBy] [nvarchar](30) NOT NULL, [UpdateDate] [datetime] NOT NULL, CONSTRAINT [PK__Navigati__B5B5D0884589517F] PRIMARY KEY CLUSTERED ( [NavigationBar_nbr] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[NavigationBar] ADD CONSTRAINT [DF__Navigatio__Creat__477199F1] DEFAULT (getdate()) FOR [CreateDate]GOALTER TABLE [dbo].[NavigationBar] ADD CONSTRAINT [DF__Navigatio__Updat__4865BE2A] DEFAULT (getdate()) FOR [UpdateDate]GO
[dbo].[NavigationBar]
Insus.NET写了一个触发器,就是第一笔(默认)记录不被删除,但可以更改。
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Insus.NET-- Create date: 2013-07-20-- Description: Default navigation bar do not allow delete.-- =============================================CREATE TRIGGER [dbo].[tri_NavigationBar_Delete] ON [dbo].[NavigationBar] FOR DELETEAS BEGIN IF @@ROWCOUNT = 0 RETURN SET NOCOUNT ON; DECLARE @nb_nbr TINYINT SELECT @nb_nbr = [NavigationBar_nbr] FROM deleted IF @nb_nbr = 1 BEGIN RAISERROR(N'默认导航条不允许删除。',16,1) ROLLBACK TRANSACTION END END
[dbo].[tri_NavigationBar_Delete]
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Insus.NET-- Create date: 2013-07-20-- Description: get all navigation bar.-- =============================================CREATE PROCEDURE [dbo].[usp_NavigationBar_GetAll]ASSELECT [NavigationBar_nbr],[Title],[Url] FROM [dbo].[NavigationBar]GO
[dbo].[usp_NavigationBar_GetAll]
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Insus.NET-- Create date: 2013-07-20-- Description: add navigation bar.-- =============================================CREATE PROCEDURE [dbo].[usp_NavigationBar_Insert]( @Title NVARCHAr(40), @Url VARCHAr(200), @CreateBy NVARCHAr(30))ASDECLARE @UpdateBy NVARCHAr(30) = @CreateByINSERT INTO [dbo].[NavigationBar] ([Title],[Url],[CreateBy],[UpdateBy]) VALUES (@Title,@Url,@CreateBy,@UpdateBy)GO
[dbo].[usp_NavigationBar_Insert]
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Insus.NET-- Create date: 2013-07-20-- Description: update navigation bar.-- =============================================CREATE PROCEDURE [dbo].[usp_NavigationBar_Update]( @NavigationBar_nbr SMALLINT, @Title NVARCHAr(40), @Url VARCHAr(200), @UpdateBy NVARCHAr(30))ASUPDATE [dbo].[NavigationBar] SET [Title] = @Title,[Url] = @Url,[UpdateBy] = @UpdateBy,[UpdateDate] = CURRENT_TIMESTAMP WHERe [NavigationBar_nbr] = @NavigationBar_nbrGO
[dbo].[usp_NavigationBar_Update]
SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: Insus.NET-- Create date: 2013-07-20-- Description: delete navigation bar.-- =============================================CREATE PROCEDURE [dbo].[usp_NavigationBar_Delete]( @NavigationBar_nbr SMALLINT)ASDELETE FROM [dbo].[NavigationBar] WHERe [NavigationBar_nbr] = @NavigationBar_nbrGO
[dbo].[usp_NavigationBar_Delete]
有了数据表,还要写一个类别:
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;namespace Insus.NET{ public class NavigationBar { private short? _NavigationBar_nbr; private string _Title; private string _Url; private string _CreateBy; private string _UpdateBy; public short? NavigationBar_nbr { get { return _NavigationBar_nbr; } set { _NavigationBar_nbr = value; } } public string Title { get { return _Title; } set { _Title = value; } } public string Url { get { return _Url; } set { _Url = value; } } public string CreateBy { get { return _CreateBy; } set { _CreateBy = value; } } public string UpdateBy { get { return _UpdateBy; } set { _UpdateBy = value; } } Businessbase objBusinessbase = new Businessbase(); public DataTable GetAll() { return objBusinessbase.GetDataToDataSet("usp_NavigationBar_GetAll").Tables[0]; } public void Insert() { Parameter[] parameter = { new Parameter ("@Title",SqlDbType.NVarChar,-1,_Title), new Parameter ("@Url",SqlDbType.VarChar,-1,_Url), new Parameter ("@CreateBy",SqlDbType.NVarChar,-1,_CreateBy) }; objBusinessbase.ExecuteProcedure("usp_NavigationBar_Insert", parameter); } public void Update() { Parameter[] parameter = { new Parameter ("@NavigationBar_nbr",SqlDbType.SmallInt,2,_NavigationBar_nbr), new Parameter ("@Title",SqlDbType.NVarChar,-1,_Title), new Parameter ("@Url",SqlDbType.VarChar,-1,_Url), new Parameter ("@UpdateBy",SqlDbType.NVarChar,-1,_UpdateBy) }; objBusinessbase.ExecuteProcedure("usp_NavigationBar_Update", parameter); } public void Delete() { Parameter[] parameter = { new Parameter ("@NavigationBar_nbr",SqlDbType.SmallInt,2,_NavigationBar_nbr) }; objBusinessbase.ExecuteProcedure("usp_NavigationBar_Delete", parameter); } }}NavigationBar
在网站的后台,创建一个网页以作添加记录
菜单名称 链接 操作
View Code
去网页.aspx.vb,实例化刚才创建好的NavigationBar类别:
Dim objNavigationBar As New NavigationBar()
添加铵钮Click事件。
有了添加记录功能,我们还需要把添加在数据表的记录显示出来,还要能够对它们编辑,更新或删除。
<%# eval("Title")%> '> <%# eval("Url")%> ' Width="300" />
View Code
绑定数据:
GridView控件的Edit事件:GridView控件的Update事件:
GridView控件的取消事件:
GridView控件的删除事件:看看运行的效果:
开发阶段,由于还没有做到前台,但需要看到效果。Insus.NET想到,使用用户控件来显示。到时开发到前台时,只要拉用户控件至需要网页的地方去即可。创建一个用户控件NavigationBar.ascx:
去用户控件NavigationBar.ascx.cs代码页中,把数据表的呈现至用户控件。在开发前端时,把此用户控件拉至网页即可。如果网站有使用母版页,只要拉至masterpage去。这个整个站点即共用此导航条。
最终导航条运行时效果:
本演示算是完成了。



