第8章 使用数据访问控件 - 实训题
更新时间:2024-01-27 15:30:01 阅读量: 教育文库 文档下载
- 第8章 顾教授您睡了吗推荐度:
- 相关推荐
第8章 数据库基础和数据访问控件
8.1 实训 使用数据访问控件查询数据库
8.1.1 实训目的
1) 通过上机操作熟练掌握GridView控件配合AccessDataSource控件操作数据库的基本方法。理解GridView控件的常用属性、事件和方法。
2) 掌握在AccessDataSource控件设置中直接使用SQL语句和LIKE运算符的技巧。理解设置GridView控件外观的基本技巧。
8.1.2 实训要求
设计一个ASP.NET网站,要求使用本章第4题创建的Access数据库,配合GridView控件、AccessDataSource控件实现对数据记录的多功能查询。页面装入时显示图8-1所示的界面,其中显示有当前数据表中所有记录,并添加有一个“总分”计算字段。在GridView的最后一行显示“数学”、“语文”、“英语”和“总分”字段的平均值。
图8-1 页面装入时显示全部记录 图8-2 按姓名进行模糊查询
在“查询依据”下拉列表框中选择“查询依据”为“学号”、“姓名”或“班级”后,在文本框内输入查询关键字,单击“查询”按钮可得到希望的查询结果,单击“显示全部”按钮可再次显示所有记录数据。要求使用“姓名”或“班级”进行查询时支持“模糊查询”方式,如图8-2所示在输入“姓名”关键字为“张”后单击“查询”按钮将得到所有姓名中包含有“张”的所有记录。
此外,要求当用户的查询返回结果集为空时,弹出信息框提示“未找到符合条件的记录!”;如果用户在没有输入查询关键字而直接单击“查询”按钮时,弹出信息框提示“查询关键字不能为空!”。
1
8.1.3 实训步骤
(1) 设计Web界面
新建一个ASP.NET网站,向页面中添加一个用于布局的HTML表格,向页面中添加必要的说明文字,添加一个下拉列表框控件DropDownList1,一个文本框控件TextBox1和2个按钮控件Button1、Button2。向表格中添加一个用于显示数据库数据的GridView1和4个AccessDataSource1~AccessDataSource4控件,分别用于按学号、姓名、班级查询记录的情况。
(2) 设置对象属性
设置下拉列表框DropDownList1的ID属性为DropType,设置文本框TextBox1的ID属性为TextKey,设置按钮控件Button1的ID属性为ButtonQuery,Text属性为“查询”。
选中AccessDataSource1,在其任务菜单中执行“配置数据源”命令,在打开对话框中单击“浏览”按钮,选择事先已存放在网站App_Data文件夹下的Student.mdb文件。
在“配置Select语句”对话框中选择“指定自定义SQL语句或存储过程”。单击“下一步”按钮打开图8-3所示的对话框,录入如下所示的SQL语句使返回记录集中包含一个“总分”计算字段。
SELECT uid,uname,usex,class,math,chs,en,(math+chs+en) as 总分 FROM [grade] WHERE ([uid] = ?)
图8-3 按学号查询的Where子句设置
单击“下一步”按钮,在打开的对话框中设置查询条件为uid列的数据等于控件TextKey的Text属性值。其他设置按屏幕提示完成即可。
AccessDataSource2、3的设置与AccessDataSource1基本相同,只是在设置WHERE子句时设置的查询条件不同,具体设置如图8-4和图8-5所示。注意,为了使程序支持“模糊查询”按姓名和班级查询时使用了LIKE运算符。
2
图8-4 按姓名查询的Where子句设置 图8-5 按班级查询的Where子句设置
AccessDataSource4的设置,只是去掉了WHERE子句部分,用于无条件返回所有记录。 (3) 编写程序代码
为了在GridView控件中显示中文的列标题,需要切换到Default.aspx页面的源视图,按如下所示修改GridView1控件的描述代码。
在实际应用中GridView控件的外观设置是通过使用主题、外观文件和CSS级联样式表技术进行设置的,由于篇幅有限这里只进行了基本的设置。
页面装入时执行的事件代码如下:
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
DropType.Items.Add(\学号\ DropType.Items.Add(\姓名\ DropType.Items.Add(\班级\
GridView1.DataSource = AccessDataSource4; GridView1.DataBind();
//在Gridview1中显示所有记录
//向下拉列表框中添加供选项
3
}
TextKey.Focus(); }
//本框得到焦点
“查询”按钮被单击时执行的事件代码如下:
protected void ButtonQuery_Click(object sender, EventArgs e) {
if (TextKey.Text == \ {
Response.Write(\查询关键字不能为空!');\ return; }
switch (DropType.Text) {
case \学号\
GridView1.DataSource = AccessDataSource1; GridView1.DataBind(); break; case \姓名\
GridView1.DataSource = AccessDataSource2; GridView1.DataBind(); break; case \班级\
GridView1.DataSource = AccessDataSource3; GridView1.DataBind(); break; }
if (GridView1.Rows.Count == 0) {
Response.Write(\未找到符合条件的记录!');\ TextKey.Text = \
GridView1.DataSource = AccessDataSource4; GridView1.DataBind(); } }
//如果GridView包含的行数为0
//根据用户选项将GridView控件绑定到不同的数据源 //如果用户没有输入查询关键字
“显示全部”按钮被单击时执行的事件代码如下:
protected void ButtonShowAll_Click(object sender, EventArgs e) {
GridView1.DataSource = AccessDataSource4; GridView1.DataBind(); }
GridView控件中发生行数据绑定时执行的事件代码如下:
double sum1 = 0,sum2 = 0, sum3 = 0, sum4 = 0;
//在事件过程之外声明存储总和的变量
4
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowIndex > -1) {
sum1 += Convert.ToDouble(e.Row.Cells[4].Text); sum2 += Convert.ToDouble(e.Row.Cells[5].Text); sum3 += Convert.ToDouble(e.Row.Cells[6].Text); sum4 += Convert.ToDouble(e.Row.Cells[7].Text); }
//e为引发行数据变化的对象,实际上就是GridView1 else if (e.Row.RowType == DataControlRowType.Footer) {
e.Row.Cells[3].Text = \平 均:\
e.Row.Cells[4].Text = ((double)(sum1 / GridView1.Rows.Count)).ToString(\ e.Row.Cells[5].Text = ((double)(sum2 / GridView1.Rows.Count)).ToString(\ e.Row.Cells[6].Text = ((double)(sum3 / GridView1.Rows.Count)).ToString(\ e.Row.Cells[7].Text = ((double)(sum4 / GridView1.Rows.Count)).ToString(\
}
//如果当前行是页脚 //累加第4列(数学)的总和
习题:
10. 使用DataList控件、FormView控件配合SqlDataSource控件,设计一个能操作SQL Server数据库的ASP.NET应用程序。具体要求如下:
程序启动后显示图8-22所示的界面,单击某记录前面的“删除”按钮可删除当前记录,单击“编辑”按钮,可跳转到图8-23所示的,由FormView控件构成的编辑页面,修改记录后单击“更新”链接按钮可更新数据并返回到网站首页,单击“取消”链接按钮将放弃修改,并返回网站首页。本题仍使用第6题创建的SQL Server数据库“addresslist”和“Tel”表。
图8-22 使用DataList控件显示数据
图8-23 通过FormView控件修改数据
解答:程序设计步骤如下。 (1) 设计Default.aspx页面
新建一个ASP.NET网站,向页面中添加一个DataList控件和一个SqlDataSource控件。
5
执行SqlDataSource控件“任务”菜单中的“配置数据源”命令,启动数据源配置向导。参照本章相关章节的介绍完成配置操作。配置完成后,数据源应能正确显示Tel表中所有数据记录。需要注意的是,本例设计使用代码方式执行删除记录的操作,更新数据将交给FormView控件完成,故Default.aspx页面中的SqlDataSource控件仅提供DataList控件中显示数据的支持,不必生成相关的Insert、Update和Delete命令。
执行DataList控件“任务”菜单中的“编辑模板”命令,选择ItemTemplate模板,按图8-24所示向模板中添加一个用于布局的HTML表格,并将默认纵向排列布局改为横向排列,向最前面2个单元格分别添加一个命令按钮控件Button1和Button2。
图8-24 编辑DataList控件的ItemTemplate模板
设置Button1的ID属性为ButtonDel,Text属性为“删除”,设置Button2的ID属性为ButtonEdit,Text属性为“编辑”。为了在DataList控件的ItemCommand事件中判断用户究竟是单击了哪个按钮,需要设置“删除”按钮的CommandName属性为“Del”,“编辑”按钮的编辑按钮的CommandName属性为“Edit”;设置2个按钮的CommandArgument属性均为“<%# Eval(\”(表示从数据源获取的当前记录的uid字段值)。
切换到HeaderTemplate模板,按图8-25所示设计DataList控件的列标题栏。
图8-25 编辑DataList控件的HerderTemplate模板
(2) 编写Default.aspx页面中相关代码
Default.aspx页面装入时执行的事件代码如下:
protected void Page_Load(object sender, EventArgs e) {
DataList1.Caption = \通 信 录\//设置DataList控件的标题 }
DataList控件中生成CommandEvent时执行的事件代码如下:
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) {
if (e.CommandName == \ {
//e表示激发ItemCommand事件的按钮,
//e. CommandArgument属性包含了当前记录的uid值 Response.Redirect(\ } else
//如果用户单击的是“删除”按钮
//如果用户单击的“编辑”按钮
6
{
//设置数据源的删除命令(设置删除记录的SQL语句) SqlDataSource1.DeleteCommand = \ e.CommandArgument + \ SqlDataSource1.Delete(); } }
//调用数据源的Delete()方法,即执行相应的SQL语句
(3) 设计Edit.aspx页面
向网站中添加一个新Web窗体,并命名为Edit.aspx。向页面中添加一个FormView控件和一个SqlDataSource控件。
配置SqlDataSource数据源时,除了使其能支持FormView控件显示记录的全部字段外,还需要为其生成Insert、Update和Delete命令(本题中仅使用Update命令),以提供对FormView控件更新记录的支持。
设置FormView控件的数据源为前面配置完成的SqlDataSource控件,设置其DefaultMode属性为Edit,使控件一旦加载就立即进入编辑模式。按图8-26所示,修改FormView控件的EditTemplate模板。
图8-26 编辑FormView控件的EditTemplate模板
(4) 编写Edit.aspx页面中相关代码
FormView控件中发生记录更新后执行的事件代码如下:
protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e) {
Response.Redirect(\}
用户在更新界面中单击“取消”按钮时执行的事件代码如下:
protected void UpdateCancelButton_Click(object sender, EventArgs e) {
Response.Redirect(\}
7
正在阅读:
第8章 使用数据访问控件 - 实训题01-27
郑州大学现代远程教育药理学课程学习指导书04-20
结合医疗纠纷案例谈医疗机构存在问题2-22013-12-1807-21
公共营养师(三A卷)理论技能试卷与答案05-11
炭疽的诊治及预防培训测试题04-20
电梯监控抗干扰技术原理与要点06-10
第十六课《就这样被你感动》07-26
国有都昌县武山林场2010年危旧房改造项目实施方案05-23
巨趾症巨足畸形矫治的研究05-23
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 控件
- 使用
- 数据
- 访问
- 实验一 多种信号音及铃流发生器实验
- 文革邮票 - 图文
- 丙烯精馏塔吊装方案最终版 - 图文
- 慢病示范区任务分解
- 沛县张寨镇中学八年级物理第八次周周清试题
- 高等学校教师资格证考试 - 大学教学论-题库+总结-一次保证通过
- 康庄外脚手架施工方案
- 新世纪大学英语(第二版)综合教程第4册Unit7 - 图文
- Centos 6.5安装oracle 11g及配置启动 - 图文
- 操作系统复习资料
- 现代农业生态园花卉苗木基地一期工程建设项目可行性报告
- 2018-2023年中国隧道掘进机(TBM)行业产销需求与投资预测分析报告(目录)
- 经济法(2016) 第4章 合同法律制度 课后作业
- 2016年12月山东省信息技术学业水平考试新题1套 - 图文
- 1111周易参同契解读
- 大数据量题目 - 图文
- 病理生理学 名词解释
- 对CAPM模型的详细总结
- 花坪镇六年级上册语文讲学案 doc123
- 论乡镇行政管理与村民自治的关系