新闻管理系统1.1数据库设计1.数据库总体结构库名:xwgl三个表:UsersInforNewsInforCatigoriesInfor2.每个表的结构3.创建过程(1)主键的设置选中ID字段,右键设置主键(2)News表的NewId是自动增长字段设置步骤:数据类型:int列属性窗口:标志规范是标识,选择“是”4.SQL语句基础select*fromCatigoriesInforinsertintoNewsInfor(title,content,posttime,CatigoryId)values(‘aa’,’bb’,’2011-1-1’,’1003’)updateCatigoriesInforsetCatigoryName='高等教育'whereid='1002'deletefromCatigoriesInforwhereid='1002'1.2系统功能类别管理、新闻管理、新闻浏览、用户管理类别管理:类别的添加、修改、删除用户管理:密码修改、用户添加、修改、删除、查询新闻管理:新闻的浏览、查询、添加、排序、分页、修改、删除1.3文件结构Web.Config文件Configuration节中填写如下内容:configuration!--appSettings/--appSettingsaddkey=ConnStringvalue=server=.;database=xwgl;uid=sa;pwd=123//appSettings/configuration1.4系统实现1.4.1新闻类别管理分页、修改、删除,分页、排序1.页面布局插入6行3列的表格,使表格整个居中。显示居中按钮:视图工具栏格式设置前3行是添加类别第4行空白第5行中间格放一个GridView第6行中间放一个按钮控件类型控件名备注TextBoxtxt_CatigoryIDTextBoxtxt_CatigoryNameButtonbtn_Add与验证控件编组GridViewGridView1Buttonbtn_DeleteRequiredFieldValidatorRequiredFieldValidator1验证IDRequiredFieldValidatorRequiredFieldValidator2验证NameGridView设置列类型控件名备注CommandField删除列CommandField编辑、更新、取消TemplateField列中放“复选框”BoundFieldID只读TemplateFieldName编辑时显示“文本框”“编号”设置为只读类别名称为模版列2.代码实现需要处理的事件:①Page_Load②btn_Add_Click③btn_Delete_Click④GridView1_RowCancelingEdit⑤GridView1_RowEditing⑥GridView1_RowUpdating⑦GridView1_RowDeleting3.问题与解决方案弹出常见对话框百度:asp.net删除确认百度:asp.netGridView删除确认删除确认:divid='de'onclick='returnconfirm(确定要删除吗?)'删除/div按钮删除确认:btn_Delete.Attributes.Add(OnClick,returnconfirm('确定要删除吗?'));问题:点击“更新”按钮时,验证控件不允许为空。解决方案:验证控件的ValidationGroup属性问题:多选删除时连续的项目会少删。解决方案:逆序删除(从后往前删除)1.4.2新闻添加1.页面布局插入5行3列的表格,使表格整个居中。控件类型控件名备注TextBoxtxt_TitleTextBoxtxt_Content文本框的多行模式TextBoxtxt_PostTimeDropDownListddl_CatigoryButtonbtn_Post问题:如何设置文本框的多行模式?2.代码实现需要处理的事件:①Page_Load②RadioButton1_CheckedChanged③RadioButton2_CheckedChanged④btn_Post_ClickPage_Load:主要任务:绑定类别下拉列表框提示:首先获取数据表然后对三个属性进行设置:DataSource、DataTextField、DataValueField最后调用DataBind()方法btn_Post_Click先构造insert语句(需要测试insert语句的正确性)然后执行之RadioButton1_CheckedChanged清空txt_PostTimeRadioButton2_CheckedChangedtxt_PostTime显示当前日期两个函数:DropDownListDataBind(DropDownListddl,stringsql_select,stringtextfield,stringvaluefield)DataAction(stringsql_nonselect)publicvoidDropDownListDataBind(DropDownListddl,stringsql_select,stringtextfield,stringvaluefield){stringconnstring=System.Configuration.ConfigurationManager.AppSettings[ConnString].ToString();//stringconnstring=server=.;database=xwgl;uid=sa;pwd=123;SqlConnectionsconn=newSqlConnection(connstring);sconn.Open();SqlDataAdaptersda=newSqlDataAdapter(sql_select,sconn);DataSetds=newDataSet();sda.Fill(ds,table);ddl.DataSource=ds.Tables[0];ddl.DataTextField=textfield;ddl.DataValueField=valuefield;ddl.DataBind();sconn.Close();}publicvoidDataAction(stringsql_nonselect){stringconnstring=System.Configuration.ConfigurationManager.AppSettings[ConnString].ToString();SqlConnectionsconn=newSqlConnection(connstring);sconn.Open();SqlCommandsc=newSqlCommand(sql_nonselect,sconn);sc.ExecuteNonQuery();sconn.Close();}3.问题与解决方案遇到的问题:手工输入和获取当前时间的事件代码写了,但是没反应。解决方案:设置控件的AutoPostBack属性为true1.4.3新闻浏览新闻浏览由两个页面组成(NewsBrowse.aspx和NewsBrowse_detail.aspx),其中NewsBrowse显示全部新闻(只显示标题和类别),而通过点击某个新闻标题后可以链接到该新闻的内容页面NewsBrowse_detail.aspx。新闻浏览、分页技术核心超链接列参数传递1.4.3.1NewsBrowse.aspx1.NewsBrowse.aspx页面布局放一个GridView,居中显示。GridView1的智能标记编辑列放一个绑定咧、超链接列、绑定列。列类型DataFieldHeaderText备注BoundFieldId新闻编号HyperLinkField标题DataNavigateUrlFields:idDataNavigateUrlFormatString:~/NewsBrowse_detail.aspx?id={0}DataTextField:TitleBoundFieldCatigoryName类别2.代码实现需要处理的事件:①Page_Load②GridView1_PageIndexChangingPage_Load主要任务:从NewsInfor,CatigoriesInfor两个表中提取数据填充到GridView中用到的函数DataSetGetDataSet(stringsql_select)voidGridView1DataBind()GridView1_PageIndexChangingAllowPaging设置为truePageSize设置为23.问题与解决方案遇到的问题:两个表中都有id字段,参数传递时可能id值不对。解决方案:需要注意表的顺序NewsInfor在前1.4.3.2NewsBrowse_detail.aspx1.NewsBrowse.aspx页面布局插入4行2列的表格,使表格整个居中。第1行是新闻标题第2行新闻类别第3行新闻内容第4行提交时间控件类型控件名备注TextBoxtxt_TitleTextBoxtxt_CatigoryName此处与添加不同TextBoxtxt_Content文本框的多行模式TextBoxtxt_PostTime2.代码实现需要处理的事件:①Page_Load主要任务:接收新闻id参数,然后根据id获取新闻内容,再显示到页面上。用到的函数DataSetGetDataSet(stringsql_select)3.问题与解决方案遇到的问题:日期中含有时间。解决方案:用DateTime类型处理1.5调程序心得1.把程序分割为若干段,每段进行一个检验。检验的方法:输出变量的内容(此变量在上一阶段和下一阶段同时用到)用常量作为参数(函数的调用时)在查询分析器或者企业管理器中检测(SQL语句)2.程序编写过程中一定要依靠VS的提示,如果输入对象后点点不提示方法,则需要查看其它处是否有错误。3.注意类型转换4.C#语言的数组下标、集合定位都是从0开始。DataSet与DataTable元素的访问•★★★DataSet(Table的集合)可以用序号或者名字访问Tables集合中的元素(ds.Tables[0]或者ds.Tables[“student”])Table[1](Table是Row的集合,也是Column的集合)Row[i]、Column[j]或Column[列名]ColumnName(Tables[0].Columns[1].ColumnName)TableNameTable[2]…Table[N]•★★★★★第i行第j列的元素访问形式:Table[1].Rows[i][j]或Table[1].Rows[i][列名]ds.Tables[news].Rows[0][2].ToString()ds.Tables[1].Rows[0][id].ToString()•Table本质上可以认为是二维数组•★★★★获取行数和列数ds.Tables[0].Rows.Count;ds.Tables[0].Columns.Count;举例:显示ds中Tables[0]中的全部数据for(inti=0;ids.Tables[0].Rows.Count;i++){for(j=0;jds.Tables[0].Columns.Count;j++){Response.Write(ds.Tables[0].Rows[i][j].ToString());Response.Write(“”);}Response.Write(“br”);}GridView元素的访问GridView也是行和列的集合。•★★★★获取行数和列数GridView1.Rows.Count;GridView1.Columns.Count;•★