在 B/S 应用系统开发过程中, 经常会遇到主从表关联显示数据记录的设计,例如留言板系统,博客系统,论坛社区等,主表存储发起人的留言内容,从表存储回复者的留言内容, 主表与从表的数据显示在同一个页面上,以便数据的浏览和处理。 这种显示方式页面布局简洁,逻辑性强,在 B/S 系统开发中得到广泛应用。 本系统主要以使用 Visual Studio 2008作为开发工具,Access2007 作为后台数据库, 利用Datalist 控 件 与 GrivdView 控件嵌套 , 通过DataSource 数据控件和 ADO.NET 技术对数据库进行操作, 阐述开发网络留言板应用程序的思路与过程。
一、设计功能
留言板的主要功能是给网络用户提供留言、回复等操作,本系统主要有两种角色:普通用户和网站管理员。 普通用户在身份验证通过后,只具有发表留言和回复留言权限; 网站管理员具有对数据的管理功能,如删除留言,编辑留言等。 具体功能设计如图1 所示。
二、数据库设计
数据库系统负责存储用户信息,用户发表、回复的留言等相关数据, 本项目数据库采用的是微软Access 2007, 它具有友好界面 , 开 发简单 , 便于安装,可随留言板程序移植到不同的计算机上运行,便于学生在不同机房不同的机器间移动。 根据留言、回复功能需求, 设计数据库如下: 创建一个 liuyan.Accdb 的数据库 ,它包含两张数据表 ,分别为 "留言表"和"回复表",由于本文重点讲解留言,回复功能,所以数据表其他字段就不再详细介绍(图2)。
三、功能设计与实现
根据系统设计功能,本系统主要分为四个模块:注册登录模块,发表留言模块,回复留言模块,管理留言模块。
(一)注册登录模块
用户发表留言或回复留言之前要进行身份验证,没有注册过的用户必须先注册,输入正确的口令后,才可进行其他操作。 注册模块的核心思想是:在前台页面通过 SQL 语句向数据库中添加一条用户信息记录,该记录的内容需要使用 RegularExpressionValidator 控件、RequiredFieldValidator 控件、CompareValidator 控件等数据验证技术来判断输入的信息是否为空、数据格式是否正确等;在向数据库插入数据之前,还要考虑注册用户名已存在的问题, 要先检测数据库中是否已经存在该记录,若是存在,提示用户换一个注册用户名,要是不存在,则直接向数据库添加记录,核心代码是:
sql="select * from userinfo where username=’”
& Textbox1.Text &”’"
mycommand=New OleDbCommand(sql,conn)
myread=mycommand.ExecuteReader()
if(myread.Read())
{Response.write(“用户已存在,请更换”)}
Else
{string cmdText="insert into 留言表(username,
pwd)values('"+username.text
+"','"+pwd.text+"')";?
OleDbCommand cmd=newOleDbCommand(cmdText,
Conn);
cmd.executeNonQuery();}
登录过程的核心思想是: 在表单页面输入用户名和密码后,提交表单页面,检测用户输入的用户名和密码是否与数据库中的用户名密码一致, 一致则验证通过,否则提示用户名或密码错误。 后台执行下面的 SQL 语句,调用 read()方法,如果为真,则表示验证通过。sql="select * from userinfo where username='"& Username.Text &"' and pwd='"& pwd.text &""
(二)发表留言模块
发表留言功能就是在前台页面输入留言内容,提交后再将记录添加到数据库。 可以使用第三方组件 FreeTextBox, 它可以轻松地嵌入到 Web Forms中,实现 HTML 内容的在线编辑,在新闻发布、博客写作、论坛社区等多种 Web 系统中都会有用途。
(三)回复留言模块
该模块主要包含显示留言和回复留言功能两大功能。 经验证通过的访问者,可以查看留言、回复留言,管理员可以对所有留言和回复进行编辑操作。 本模块使用 Datalist 控件实现数据绑定显示留言内容,在它的项目模板里嵌套 GridView 控件,用于显示回复内容,从而实现主从、表分级数据显示,控件嵌套设计如图 3 所示,具体思路如下。
首先,在页面中布置一个 Datalist 控件,将数据库留言表中的留言人,留言主题,留言内容等绑定到该控件,用于显示留言内容,例如:<asp:Label ID="留言人"runat="server" Text='<%# Eval("username")%>'. 使用 VS2008 里包含的AccessDataSource 控件能很容易的实现该功能,它能将 Access 数据库中的数据提取至 ASP.NET(。aspx)页面。 其属性设置简单灵活, 如用 DataFile 属性用来指向计算机上 Access数据库文件,用SelectCommand 属性设定一个显示需要返回的结果集 ( 表和列 ) 的语句 , 注意SelectCommand 必须使用SQL 语法来定义,此部分的核心代码如下:.
<asp:accessdatasource id = "AccessDataSource"runat="server" selectcommand="Select * From 留言表" datafile="~/App_Data/liuyan.accdb">
</asp:accessdatasource>
<asp:Datalist id = "NorthwindProductsGridView"runat="server" datasourceid="AccessDataSource">
</asp:Datalist>
其次, 正确设置 AccessDataSource 数据源和Datalist 控件后,页面已经能显示数据库中的留言内容 , 再 Datalist 控件的项目模板里嵌套一个GridView 控件用于显示从表数据, 也就是显示回复的记录。 再添加两个 Button 按钮,和一个 TextBox 控件,两个按钮用于"回复"和"提交"操作,"提交"按钮和 TextBox 控件设置默认隐藏,当单击"回复"时,"提交"按钮和回复文本框显示出来,在文本框内输入数据,当单击"提交"按钮时,将回复数据添加到数据库。 使用 AccessDataSource 完成数据源的配置,嵌套的 GridView 控件核心源码部分:
<asp:GridView ID="GridView1" runat="server"AutoGenerateColumns = "False" DataKeyNames= " 回 复 ID" DataSourceID = "AccessDataSource2"Width="410px">
<asp:CommandField ShowDeleteButton = "True"ShowEditButton="True" />
<asp:BoundField DataField = " 回 复 内 容 "HeaderText="回复内容" SortExpression="回复内容"/></asp:GridView>
单击"提交"按钮,首先要在 Datalist 控件中找到该按钮和其他嵌入进去的控件,使用 FindControl 方法,例如:
Dim huifu As Button =e.Item.FindControl(huifu")//找"回复"按钮Dim tjly As TextBox=e.Item.FindControl ("tjly")//找"提交留言"按钮找到控件后,再激活控件事件,向数据库中添加留言记录。
AccessDataSource1.InsertCommand = "insert into回复表(ID,Subject,Content,username) values ('"& ID.Text &"''" &Subject.Text & "','" & Content.Text & "','" &username.Text & "')"AccessDataSource1.Insert()此处 ID 为发起留言的用户的留言 ID, 不是回复留言的留言 ID,即主表的留言 ID,不是从表的回复 ID,一定不能混淆。
从表的数据源要根据主表动态选择, 在设置从表 AccessDataSource 配置 SQL 语句时, 添加 Where子句处,要设置源为"Control",参数属性"控件 ID"设置为图 3 中的"留言 ID",前台源码如下:
<asp:AccessDataSource ID="AccessDataSource2"runat="server"DataFile = " ~/liuyan.accdb" DeleteCommand = "DELETE FROM [回复表] WHERE [回复 ID] = ? "InsertCommand="INSERT INTO [回复表]([回复ID],[回复内容]) VALUES(? ,? )"SelectCommand="SELECT [回复 ID],[回复内容]
FROM [回复表] WHERE([留言 id] = ? )"UpdateCommand="UPDATE [回复表] SET[回复内容]=? WHERE [回复 ID]=?">
可以看出通过 GridView 控件的嵌套,主表与从表通过留言 ID 相关联,很好的实现了留言表(主表)和回复表(从表)在同一个页面中的显示,具有显示直观、操作简便的优点。
(四)管理留言模块。
本模块的主要功能是管理留言。 管理员可以对所有的留言信息进行编辑、删除等操作。GridView 控件"任务"选项卡里可以设置控件的编辑、删除、排序、分页等功能,只需要设置好数据源即可,数据源核心代码为:
<asp:AccessDataSource ID="AccessDataSource1"runat="server"DataFile="~/App_Data/liuyan.mdb"DeleteCommand = "DELETE FROM [ 留言表 ]
WHERE[ID]=? "InsertCommand="INSERT INTO [留言表]([Subject],[Content]) VALUES(? ,? )"SelectCommand="SELECT * FROM [留言表]"UpdateCommand="UPDATE[留言表]SET [Subject]
=? WHERE [ID]=? ">
</asp:AccessDataSource>
四、总结
主从表的数据查询与显示模式在实际的项目开发中应用特别普遍,在进行控件嵌套和数据绑定时,一定要区分好主从控件的关系, 注意嵌套控件的获取方法。 本文介绍的方法没用采用过多的编码,充分利用了 AccessDataSource 控件, 很好的解决数据筛选与分级显示的问题, 这种方法在教学上和项目开发上都取得了良好的效果。
参考文献:
[1]莫学值。 谈在。NET 平台中 DataList 控件嵌套的应用[J].办公自动化,2011,(24):53-55.
[2]蒋昀昕。基于 ASP.NET 技术的留言板系统的设计与实现[J].电脑与电信,2013,(11):44-46.
易大学服务平台采用ASP.NET框架技术来实现, 通过多层体系结构使系统开发更加有条理, 并有助于后期的扩展和维护。而且, 前端的模块化设计让大学生使用该平台更加方便, 并易于寻找到所需的学习资源, 从而增加平台的易用性。实际测试表明, 该平台能够真正有效地...
图书漂流是指漂友将自己不再阅读的书贴上特定的标签放到公园长椅、火车站候车室、广场等公共场所,供他人阅读,阅读之后,拾取人按照标签指示,再以同样的方式将书投放到公共场所中,如此接力下去。...
引言随着企业的发展,人才需求与日俱增,为加快人才队伍建设,引导员工多渠道成才,各单位都规划了多渠道人才培养成长路径,建立了多通道人才发展体系,提供每年各级各通道人才申报机会.由于各类通道的申报及考核的业绩材料涉及专业管理、建章立制、创新...
0引言20世纪80年代,全国高校就纷纷开始建设校园网络,现在各高校初步实现了网上办公、网上管理、网上教学、网上服务的教学模式。同时,国家教育部对于大学生体质测试提出明确要求,要求各高校对在校大学生能进行大学生体质测试并且实现在线查询。结合...
物流企业是反映一个国家经济发展的凭证,为此,对于物流行业发展是一个热点问题,尤其对于企业来说,合理物流调度管理能够为企业未来发展提供重要支持。...
随着计算机技术、通信技术以及Internet的高速发展,利用先进的信息技术手段加强中医药信息资源的建设,将中医药有效信息转化为数字化知识,已经成为中医药信息化发展必须面对的一个问题。目前,各地都相继开展了各类中医药信息网的建设,文献收录的中药已有...
1前言随生活水平的不断提高,人们对旅游的意识也在不断增强,而目前,旅行社组织游客的主要方式为组团旅游,其特点是旅游路线固定,时间段固定。对旅行社业务进行支持的计算机软件系统也都停留在这方面的管理上。利用网络平台提供给用户自由行的旅游服务是...
Web应用是目前Internet上应用最广泛的信息服务,Web服务已经影响到广告、新闻、电子商务等各个服务领域。ASP和ASP.NET都是应用于web开发领域的开发平台。ASP(ActiveServerPages)是微软公司推出的一种取代CGI(CommonGatewayInterface)的技术。但是,随着We...
1ASP\ADO基本介绍ASP是一个可以产生与运行动态、交互、高性能的web服务器应用程序,ASP不仅仅是因特网的一个组件,同时也是microsoftpersonalwebserver的一个组件,所以它可以从Windows98se当中获取,还可以从http:www.microsoft。com...
0引言各高校在网站建设和推广应用过程中普遍存在以下问题:一是在建设学校门户网站、各部门网站、学科网站和课程网站时各自为政独立建设,费时费力;二是由于各个网站建设技术水平参差不齐,存在许多安全漏洞;三是由于各个网站数据很难共享集成,无法实现...