1、 学习了ASP.NET 3.5基础知识后,就需要使用这些知识来进行项目开发工作,本章将创建一个简单的留言本项目,以方便读者学习。留言本在网站开发中具有重要的作用,一般类型的网站都具有留言本功能,这样可以方便客户与商家的沟通,特别是对于商贸类型的网站具有重要的意义。16.1 系统分析 16.2 系统总体结构设计 16.3 客户留言模块 16.4 留言列表模块 16.5 后台管理模块 1 1功能需求分析功能需求分析本章中实现的留言本主要包括以下几个基本功能模块:(1)客户留言模块。(2)留言列表模块。(3)留言管理模块。2 2数据库需求分析数据库需求分析根据系统的设计目标,系统需要具有客户留言、留
2、言列表、留言管理等功能。下面从数据库需求方面分析该系统功能。(1)客户留言功能。(2)留言列表功能。(3)留言管理功能。3 3环境需求分析环境需求分析(1)网站开发环境 操作系统:Windows XP(SP2)/Windows 2000(SP4)/Windows Server 2003(SP1)。开发环境支持平台:Microsoft.NET Framework 3.5。开发工具:Visual Studio.NET 2008集成开发环境。开发数据库:SQL Server 2005。开发语言:ASP.NET 3.5。3 3环境需求分析环境需求分析(2)服务器端运行环境 操作系统:Windows X
3、P(SP2)/Windows 2000(SP4)/Windows 2003 Server(SP1)。Web服务:IIS5.0以上版本+Frontpage2000服务器扩展。开发环境支持平台:Microsoft.NET Framework 3.5。数据库服务器:SQL Server 2005。数据库访问组件:MDAC2.7。浏览器:Internet Explorer 6.0及以上。3 3环境需求分析环境需求分析(3)客户端运行环境 浏览器:Internet Explorer 6.0及以上。分辨率:最佳效果1024768像素。16.2.1 16.2.1 模块设计模块设计留言信息表留言信息表 字段中
4、文描述数据类型是否为空id留言编号Int 主键否Name姓名Varchar(20)否Emails邮箱Varchar(50)否Contents留言内容text否Datatimes留言时间datatime否创建创建messagesmessages表表CREATE TABLE dbo.messages(id int IDENTITY(1,1)NOT NULL,name varchar(20)NOT NULL,emails nchar(50)NOT NULL,contents text NOT NULL,datatimes datetime NOT NULL CONSTRAINT DF_mes_tim
5、e_7D78A4E7 DEFAULT(getdate(),CONSTRAINT PK_mes_7C8480AE PRIMARY KEY CLUSTERED(id ASC)WITH(PAD_INDEX =OFF,STATISTICS_NORECOMPUTE =OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS =ON,ALLOW_PAGE_LOCKS =ON)ON PRIMARY)ON PRIMARY TEXTIMAGE_ON PRIMARY此模块是客户进行留言的窗口,客户可以在其中输入姓名、邮箱和留言内容,然后单击“提交”按钮即可。(1)功能。客户保存留言信息。(2)
6、数据流程。主要是对留言信息表进行操作。(3)具体界面设计。客户留言板块留言成功提示页面(4)具体要求和注意事项。注意表单中要提供验证留言者姓名、邮箱是否为空的表单验证代码。(5)所运用到的知识点。1)文本框控件、验证控件和按钮控件。2)通过ADO.NET连接数据库、查询数据库。当用户单击提交按钮的时候,会将用户填写的留言信息提交到数据库中存储,提交按钮的操作代码如下。1protected void btSub_Click(object sender,EventArgs e)2 3 string name=this.tbName.Text;4 string emails=this.tbMail.
7、Text;5 string content=this.tbMessage.Text;6 string SqlStr=insert into messages(name,emails,contents)values(+name+,+emails+,+content+);7 int n;8 if(this.RequiredFieldValidator1.IsValid=true&this.Required FieldValidator2.IsValid=true&this.RegularExpressionValidator1.IsValid=true)9 判断所有验证控件是否都处于正常状态,也就
8、是用户输入的信息是合法的10 n=DBManage.Command(SqlStr);11 if(n 0)12 13 Response.Redirect(showMessage.aspx?news=恭喜,留言成功!);14 15 16 this.tbName.Text=;17 this.tbMessage.Text=;18 this.tbMail.Text=;19 在客户留言页面中还提供了清空按钮,用来清空用户当前输入的留言内容,其代码如下。1 protected void btNum_Click(object sender,EventArgs e)2 3 this.tbName.Text=;4
9、 this.tbMessage.Text=;5 this.tbMail.Text=;6 在留言列表板块中,将客户历史留言呈现到前台页面中,客户可以在这里查看自己和其他用户的历史留言。(1)功能。显示用户留言。(2)数据流程。主要是对留言信息表进行操作。(3)具体界面设计。留言列表模块(4)所运用到的知识点。1)GridView控件和下拉列表控件。2)通过ADO.NET连接数据库、查询数据库。在留言列表自定义窗体中,最值得注意的地方是DataList控件的分页方法,下面针对分页的Button控件和DropDownList控件的事件进行详细讲解。1 protected void Button1_C
10、lick(object sender,EventArgs e)2 3 this.Label1.Text=1;4 this.DropDownList1.SelectedIndex=Convert.ToInt32(this.Label1.Text);5 BindData();6 7 protected void Button2_Click(object sender,EventArgs e)8 9 this.Label1.Text=Convert.ToString(Convert.ToInt32(this.Label1.Text)-1);10 this.DropDownList1.Selected
11、Index=Convert.ToInt32(this.Label1.Text);11 BindData();12 13 protected void Button3_Click(object sender,EventArgs e)14 15 this.Label1.Text=Convert.ToString(Convert.ToInt32(this.Label1.Text)+1);16 BindData();17 18 protected void Button4_Click(object sender,EventArgs e)19 20 this.Label1.Text=this.temp.
12、Text;21 22 BindData();23 24 protected void DropDownList1_SelectedIndexChanged(object sender,EventArgs e)25 26 this.Label1.Text=Convert.ToString(Convert.ToInt32(this.DropDownList1.SelectedIndex)+1);27 BindData();28 管理员可以在此模块中查看用户的留言信息,从而方便商家与用户联系,同时也可以通过删除按钮,来删除过时的留言和一些不良的留言信息。(1)功能。管理员可以在此模块中查看用户的留言
13、信息。(2)数据流程。主要是对留言信息表进行操作。(3)具体界面设计。留言管理模块(4)所运用到的知识点。1)GridView控件和按钮控件。2)通过ADO.NET连接数据库、查询数据库。留言管理页面的名称为adminIndex.aspx,在此为了便于测试,没有设计用户登录模块,直接访问此页面就可以对留言内容进行管理。留言管理页面实现了留言信息的留言和删除操作,方便管理员对留言本中的留言信息进行管理。用来呈现用户留言信息的控件是GridView控件,在此控件中显示了用户的姓名、邮箱、留言时间、留言内容和删除信息。adminIndex.aspx页面的设计代码如下。1 234留言管理页面56781
14、2 14 15 16 17 18 19 asp:TextBox ID=TextBox1 runat=server Text=20 21 22 asp:Label ID=Label1 runat=server Text=23 24 25 26 27 28 asp:TextBox ID=TextBox2 runat=server Text=29 30 31 asp:Label ID=Label2 runat=server Text=32 33 34 35 36 37 asp:TextBox ID=TextBox3 runat=server Text=38 39 40 asp:Label ID=La
15、bel3 runat=server Text=41 42434445 46 asp:TextBox ID=TextBox4 runat=server Text=47 48 49 asp:Label ID=Label4 runat=server Text=50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 接下来分析一下GridView控件的数据绑定方法。对于GridView控件的数据绑定最好放在独立的方法中,这样可以方便程序的重复使用,这里使用名为databind()方法来实现GridView控件的数据绑定操作,代码如下。1 public void
16、dataBind()2 3 SqlDataAdapter sda=new SqlDataAdapter();4 sda.SelectCommand=new SqlCommand(select*from messages order by id desc,DBManage.GetConnection();5 DataSet ds=new DataSet();6 sda.Fill(ds,dsmes);7 GridView1.DataSource=ds;8 GridView1.DataBind();9 在实现了GridView控件的数据绑定操作,接下来讲解一下GridView控件的翻页功能的实现。G
17、ridView控件的翻页功能可以使用PageIndexChanging事件来实现,GridView控件的翻页代码如下。1 protected void GridView1_PageIndexChanging(object sender,GridViewPageEventArgs e)2 3 GridView1.PageIndex=e.NewPageIndex;4 dataBind();5 在“添加字段”窗口中,选择字段类型为“CommandField”类型,在“页眉”文本中输入“删除”,“按钮类型”为“Link”或“Button”,在“命令按钮”选项组中勾选“删除”复选框。在GridView控
18、件中添加“删除”列之后,就可通过GridView控件的RowDeleting()事件来实现数据的删除操作,其代码如下。1 protected void GridView1_RowDeleting(object sender,GridViewDeleteEventArgs e)2 3 int id=Convert.ToInt32(GridView1.DataKeyse.RowIndexid.ToString();4 string sql=delete from messages where id=+id;5 int n;6 n=DBManage.Command(sql);7 if(n 0)8 9 Response.Write(function window.onload()alert(删除成功);location.href=adminIndex.aspx);10 11 else12 13 Page.RegisterStartupScript(alert,alert(删除失败!);14 15