第9章项目实战:新闻发布系统本章要点新闻发布系统概念及作用新闻发布系统后台架构新闻栏目管理功能实现新闻内容管理功能实现FckEditor在线编辑器的使用用户权限管理功能实现前台动态页面开发流程新闻发布系统概述新闻发布系统就是一个把杂乱无章的新闻信息有效得组织起来并以有序的方式呈现给前端客户的一个信息系统,系统主要实现对新闻的分类,管理,检索,浏览等一系列问题,从而为用户提供一个美观,大方,快速的前台新闻阅读界面。新闻发布系统应包括以下功能:1.系统登录及权限控制2.新闻栏目管理3.新闻内容发布4.新闻内容审核序号列名数据类型长度小数位标识主键允许空说明1ID自动编号40是是否一级栏目编号2Name文本400否一级栏目名称3IsVisible是/否0是是否可用4ShowNo数字40是显示顺序表9-1一级栏目表表9-2二级栏目表序号列名数据类型长度小数位标识主键允许空说明1ID自动编号40是是否二级栏目编号2Level1ID数字4否一级栏目编号3Name文本400否二级栏目名称4IsVisible是/否0是是否可用5ShowNo数字40是显示顺序表9-3新闻表序号列名数据类型长度小数位标识主键允许空说明1ID自动编号40是是否新闻编号2Level1ID数字40否一级栏目编号3Level2ID数字40否二级栏目编号4Title文本2550否新闻标题5Contents备注是新闻内容6From文本50是新闻来源7EditDate日期/时间是录入时间5Checked是/否是是否审核序号列名数据类型长度小数位标识主键允许空说明1ID自动编号40是是否角色编号2RoleName文本20否角色名称表9-4用户角色表序号列名数据类型长度小数位标识主键允许空说明1UserName文本200是否用户名2Password文本20否密码3RoleID数字40否角色编号表9-5用户表后台系统框架设计本项目采用框架集的形式完成后台设计,具体步骤如下:1)利用VS2005建立名为Jsjx的网站,可以保存在D盘根目录下,也可以按照自身需求放在某个目录下。2)在新创建的解决方案上,右键,选择“新建文件夹”选项,并将新添加的文件夹改名为“Admin”,如图9.1所示。图9.1添加文件夹3)在Admin文件夹下添加名为images和css的子文件夹,文件夹中的素材可从本书源代码中对应文件夹拷贝。4)创建名为Default.aspx的Web窗体,代码如下:1.txt4)在Admin文件夹下分别添加名为“FrameTop.aspx”、“FrameBottom.aspx”、“FrameLeft.aspx”、“MainPage.aspx”的Web窗体,具体代码可参考源代码中的内容,程序目录结构如图9.2所示:图9.2系统框架文件结构5)最终运行效果如图9.3所示:图9.3系统框架运行界面新闻栏目管理新闻栏目管理模块操作数据库中的一级栏目表(Level1)和二级栏目表(Level2),使用的控件包括AccessDataSource、GridView和DetailsView等。实现一级栏目管理实现对一级栏目进行增加、修改、删除和浏览的具体操作步骤如下:1)在完成后台系统框架的基础上,在admin目录下创建channel子目录,并建立如图9.4所示的页面文件:图9.4创建页面文件2)在Level1Insert.aspx文件上,添加DetailsView控件,配置数据库为Level1,并将DefaultMode改为Insert,如图9.5所示。图9.5添加DetailsView控件3)将DetailsView对应的数据源控件AccessDataSource1的InsertQuery属性修改为如图9.6所示:图9.6修改InsertQuery属性4)选中DetailsView1控件,在VS2005的属性对话框中,为DetailsView1添加ItemInserted事件,如图9.7所示:图9.7添加ItemInserted最终代码如下:protectedvoidDetailsView1_ItemInserted(objectsender,DetailsViewInsertedEventArgse){ClientScript.RegisterStartupScript(this.GetType(),insertlevel1,scriptlanguage='javascript'alert('添加成功');/script);}5)在Level1View.aspx页面上拖拽GridView控件,配置Access数据源,指向Level1表,并将表头改为中文。而后,通过“GridView任务”对话框构建“启用删除”选项,并添加HyperLink列,HyperLink列属性如图9.8所示:图9.8添加超链接列切换到编辑新闻栏目页面6)采用和Level1Insert.aspx的方法来设置Level1Edit.aspx页面,注意要用到第6章讲述的方法为AccessDataSource数据源设置Select语句的QueryString参数,如图9.10所示。图9.9设置AccessDataSource数据源的Select语句参数实现二级栏目管理二级栏目管理的操作和添加一级栏目类似,其中不同的地方主要有:1)在“Level2Insert.aspx”、“Level2Edit.aspx”文件中,利用DetailsView添加二级栏目时,需要让用户选择一级栏目内容,做法是将Level1ID列转换为模版列,而后选择编辑模版,利用DropDownList控件实现选择下拉列表功能,如图9.10所示。图9.10利用模板列实现一级栏目的选择功能2)在“Level2View.aspx”文件中,注意在配置完AccessDataSource数据源控件后,将数据源控件的“SelectQuery”属性设置为如下代码:SELECTLevel2.id,Level2.Level1ID,Level2.Name,Level2.IsVisible,Level2.ShowNo,Level1.NameASLevel1NameFROM(Level1INNERJOINLevel2ONLevel1.id=Level2.id)ORDERBYLevel2.Level1ID,Level2.ShowNo注意一定要在配置完AccessDataSource数据源控件后再修改“SelectQuery”属性,这样做的好处是,可以继续利用GridView控件对应的“GridView”对话框中的“启用删除”等功能。z新闻内容管理9.4.1在线编辑器简介HTML在线编辑器就是用于在线编辑的工具,编辑的内容是基于HTML的文档。因为它可用于在线编辑基于HTML的文档,所以,它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。在线编辑器具备以下特点:1)所见即所得•通过编辑器,编辑的文字和图片等HTML标记输出到页面的效果和编辑时显示的效果一致,无需经过其他步骤的转换和编码,能让用户方便地对编辑的内容进行修改和排版。2)自动转换HTML代码•在编辑状态编辑的文字、图片等内容都在后台状态下自动转换为可被浏览器识别的HTML标记语言;而且用户可以在代码状态下对代码标记进行修改和排版。3)简单易用4)方便快捷•使用所见即所得的编辑器能快捷、方便地编辑出效果一流的图文内容,与纯手工编写代码进行编辑的方式比较,可以节省大量的时间和精力。5)与系统现有内容兼容、吻合•利用编辑器提供的功能,可以方便地把系统已上传的图片动画影音文件加载到网页内容中,也可以通过插入信息组件与其他网页内容进行整合。本节采用的在线编辑器是FckEditor,使用该控件的步骤如下:1)通过FCKeditor的官方网站是:下载FCKeditor2.4.2.zip和FCKeditor.NET版的2个zip包。2)分别解压后把FCKeditor2.4.2.zip里的fckeditor目录整个复制到网站中。3)解压FCKeditor.NET.zip包后,在FCKeditor.Net_2.2\bin\Debug目录里找到FredCK.FCKeditorV2.dll,把该复制到网站的Bin目录下,如果不存在该目录,可以在根目录下创建Bin目录。实现新闻录入功能本节利用FckEditor控件实现新闻内容添加功能,具体步骤如下:1)创建News表,表结构如图9.11所示:图9.11News数据库2)修改web.config文件,将appsetting,connectionstring改为如下格式:appSettingsaddkey=AccessPathvalue=~/App_Data/myfinance.mdb//appSettingsconnectionStringsaddname=AccessStringconnectionString=Provider=Microsoft.Jet.Oledb.4.0;DataSource=providerName=System.Data.Oledb//connectionStrings3)在VS2005的解决方案资源管理中选中网站,点击鼠标右键,在弹出菜单中执行“添加ASP.NET文件夹”→“App_Code”命令,向网站中添加App_Code文件夹,并在该文件夹下添加Common类,代码如下:2.txt4)将FckEditor的整个文件夹拷贝到根目录下,将FredCK.FCKeditorV2.dll拷贝到Bin目录下(没有该目录可新建),并在项目中对该dll添加引用,在web.config的appsettings节点下,添加如下代码:addkey=FCKeditor:BasePathvalue=~/Fckeditor//addkey=FCKeditor:UserFilesPathvalue=/jsjx/Upload/5)在VS2005工具箱上点击鼠标右键,在弹出菜单中执行“选择项”命令,在弹出的“选择工具箱项”对话框中,点浏览按钮,选择FredCK.FCKeditorV2.dll,从而在选项卡中添加FckEditor控件,如图9.12所示。图9.12选择工具箱项6)在admin目录下新建名为“News”的文件夹,并添加“NewsInsert.aspx”文件,如图9.13所示。图9.13添加NewsInsert.aspx文件7)通过添加TextBox、Button、DropDownList等控件,将添加新闻界面设计为如图9.14所示,注意必添字段验证:图9.14添加新闻界面图9.14添加新闻界面8)为一级栏目的DropDownList控件按如图9.15所示设置数据源:图9.15设置数据源在数据源控件的添加Where子句对话框中,按图9.16进行配置:图9.16设置Where子句9)在DropdownList控件中添加如图9.17所示的项,并将该控件的AppendDataBoundItems和AutoPostBack属性设置为True。图9.17添加项9)为一级栏目的DropDownList控件配置如图9.18所示的显示字段和值字段:图9.18配置显示字段和值字段10)二级栏目DropDownList控件的配置基本和一级栏目类似,但是要注意where子句的配置,将之设置为如图9.20所示的形式:图9.20二级栏目Where子句11)二级栏目的Selece语句如图9.21所示图9.21二级栏目Select语句12)为“InsertNews.aspx”页面上的“保存”按钮添加Click事件,并添加如下代码:3.txt13)修改“NewsInsert.aspx”页面的声明,将ValidateRequest设置为false,如下所示:%@PageLanguage=C#AutoEv