




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十一讲 DataGrid控件应用之一,教学内容 一、DataGrid控件概述 二、数据字段列设计 三、超级链接列设计 四、按钮列设计 五、DataGrid控件应用之一,教学目标,掌握DataGrid控件数据字段列设计; 掌握DataGrid控件超级链接列设计; 掌握DataGrid控件按钮列设计; 掌握购物车技术; 学习DataGrid控件的初步应用。,一、DataGrid控件概述(1/8),DataGrid控件的功能十分强大,可以对二维表中的数据显示、排序和分页等,还可以编辑和删除数据,利用模板列可以向它加入各种子控件,实现十分复杂的功能。 (一)常用属性 DataSource属性:绑定到控件的数据源,可以是数组、数据集、数据视图等。 DataMember属性:若DataSource属性指定的是一个数据集,则DataMember属性指定到该数据集的一个数据表。 DataKeyField属性:用于填充DataKey集合的数据源中的字段,一般应指定到数据表的主键字段。 SelectedIndex属性:当前选定项的索引号,未选择任何项时为-1。 AutoGenerateColumns属性:是否自动生成控件的数据绑定列,默认为true。,AllowPaging属性:设置是否打开分页功能,默认为false(不分页)。 AllowCustomPaging属性:设置是否打开对自定义分页的支持,默认为false。 BackImageUrl属性:背景图片的路径及文件名。意味着控件可以使用一幅图片作为背景。 ShowHeader属性:是否显示列标头,默认为true。 ShowFooter属性:是否显示页脚注,默认为false。 (二)常用事件 DataGrid控件的事件与DataList控件的事件有些类似。因为可以向控件内加入按钮列和模板列等,子控件的事件被反升至容器控件,这些事件称为反升事件。例如CancelCommand、DeleteCommand、EditCommand、ItemCommand等都是,这些事件与子控件的关系同DataList控件。,一、DataGrid控件概述(2/8),ItemCommand事件:在控件生成事件时发生。向DataGrid控件加入按钮列控件时,其CommandName属性可以设置成7.2节规定的名字,或程序员给定的名字。当这些按钮被单击时,都将引发ItemCommand事件,在这个事件处理程序中通过判断按钮控件的CommandName属性确定引发事件的按钮所在列。 SelectedIndexChanged事件:当前的选择发生改变时激发。 PageIndexChanged事件:当前页索引发生改变时激发。 ItemCreated事件:在控件内创建项时激发。若要对控件内的子控件做某些初始设置时,那些代码要写在这个事件处理程序中。 (三)HTML标记 “ DataMember=“employeeInfo“ DataKeyField=“编号“ ,一、DataGrid控件概述(3/8),(四)使用DataGrid控件的一般步骤 将DataGrid控件拖入到页面后,一般需要对其做以下工作。 1.绑定数据 为了在DadaGrid表格中显示数据源的数据,必须将控件绑定到数据源,数据源一般是一个数据集,它对应于一个数据库。 使用数据连接向导做数据连接,便于之后在属性窗口中设置属性和对属性生成器的操作。如果采用程序代码连接数据库,在DataGrid控件的属性窗口和属性生成器中将看不到数据集、表和字段,不便于操作。 使用数据连接向导将数据库MMIS的数据表employeeInfo连接到页面并生成数据集dataSet11后,再在DataGrid1控件的属性窗口指定DataSource、DataMember和DataKeyFiel属性,操作见下图。,一、DataGrid控件概述(4/8),一、DataGrid控件概述(5/8),虽然已经指定了DataGrid控件的3个数据绑定属性,此时还不能显示数据,必须填充数据集,并调用DataBind方法进行数据绑定才能显示数据。这个操作的代码一般这样写: private void Page_Load(object sender, System.EventArgs e) if(!IsPostBack) sqlDataAdapter1.Fill(dataSet11,“employeeInfo“); DataGrid1.DataBind(); ,一、DataGrid控件概述(6/8),2.美化外观 为了增强DataGrid控件的表现力,需要对控件的外观作必要的修饰。外观的美化工作可以通过属性窗口设置外观属性或通过自动套用格式和使用属性生成器实现。 使用自动套用格式来美化外观的做法是:右击控件,在弹出菜单上单击【自动套用格式】,然后选择一种格式,单击【确定】。,一、DataGrid控件概述(7/8),使用属性生成器不但可以设置DataGrid控件的外观,还可以确定控件的行为方式,如指定分页,加入按钮列、超级链接列等。右击控件,再在弹出菜单上单击【属性生成器】,通过“格式”和“边框” 对控件外观的设置,如下图。,一、DataGrid控件概述(8/8),二、数据字段列设计 (1/3),DataGrid控件的数据字段列是默认的列,如果没有数据字段列,DataGrid控件就不能显示数据源的数据。默认的情况下在表格中显示数据集中的所有字段,每个字段为一列,列的顺序为字段在数据集中的顺序。注意,仅支持数值类型、字符(串)类型、日期类型和Decimal类型的显示,其他类型(例如图片)无法直接显示在单元格中。 DataGrid控件的AutoGenerateColumns属性设置是否在控件中自动生成数据字段列,默认为true,显示所有字段列。 在控件中有选择性地显示某些数据字段列,有3种办法可选: 1.在提取数据到数据集中时,用select查询语句设定筛选字段名。如“select 姓名,工资 from employeeInfo”仅提取姓名和工资到数据源,将来仅显示姓名和工资这两个字段,并且SQL语句中字段名的排列顺序与DataGrid表格控件中数据字段列的顺序相同。如果还需要更多的字段参与其他运算,那就需要另找途径。,2.在HTML标记中设定。设置控件的AutoGenerateColumns属性为false,取消自动生成数据字段列的功能,在DataGrid控件的HTML标记中增加数据字段列标记。 3.使用属性生成器。这种方法方便快捷。 单击DataGrid控件属性窗口下部的“属性生成器”超链接,打开控件的属性生成器,在左侧的项目框中选择“列”,如下图。,二、数据字段列设计 (2/3),去掉“在运行时自动创建列”前小方框内的“” 。,在“可用列” 中选择“数据字段”,单击【】按钮将该字段移入已选池中。,已选池右侧的“”、“”和“” 按钮用于调整列的显示顺序或移去已选字段。在 “BoundColumn属性”区内,可以编辑已选池中某列的属性。设置的DataGrid表格的显示效果如下图,二、数据字段列设计 (3/3),三、超级链接列设计(1/5),向DataGrid控件添加超级链接列的工作一般在属性生成器中进行。下例中使用product数据库的fruitInfo数据表作为DataGrid控件的数据源。在这个数据表中,有一个“详情网页URL”字段。假定在“详情网页”中详细介绍了这种水果的产地、品种、营养价值等相关资料。将每种水果的详情网页的URL记录于“详情网页URL”字段中。在DataGrid表格中显示各种水果的少量字段,增加一个超级链接列,使能够导航到各种水果的详情网页上去。 首先将各水果的详情网页设计好,每种水果一页或多种水果共用一页,并将每页的URL记录到fruitInfo数据表对应的“详情网页URL”字段中去。可以使用相对路径,若某详情网页的文件名为WebForm2.aspx,可直接在其“详情网页URL”字段中填入“WebForm2.aspx” 。,设计主页:向页面拖入一个DataGrid控件创建对象DataGrid1,使用数据连接向导将网页连接到数据库product,提取fruitInfo数据表的所有数据到数据集dataSet11中,将它作为控件DataGrid1的数据源。,三、超级链接列设计(2/5),打开控件DataGrid1的属性生成器,如右图。为控件指定商品编号、商品名称、产地、等级和单价作为数据字段。再向控件添加一个超级链接列,导航到每种水果的详情网上。,在“可用列”列表中选择“超级链接列”,单击【】右移按钮将超级链接列加入到选定的列中,就可以为该列编辑HyperLinkColumn属性了。对HyperLinkColumn属性的各项目说明如下: 页眉文本:即该列的标头文本,说明该列是什么内容。 页眉图象:页眉也可以用一幅图片表示,可单击右侧的“”浏览按钮找到图片文件。如果既指定页眉文本又指定页眉图象仅显示页眉图象。 页脚文本:页的脚注,对列中内容的补充说明。若设置了该项内容,需要将DataGrid控件的ShowFooter属性设置为true。本例页脚文本中输入“不可不看”。 文本:该列中各单元格中以超链接形式显示的文本。若希望该列各单元格显示相同的超链接文本,就在这里设置。本例输入“更多详情”。,三、超级链接列设计(3/5),文本字段:若要该列中显示不同的超链接文本,就需要指定该属性。如表格的每行为一个大学的资料,在清华大学这一行的超链接要显示“去清华”,就需要在数据表中专门设计一列保存这个内容,在属性生成器中就将超级链接列的“文本字段”指定为该列。也可以借用数据表的已有字段,如用“学校名称” ,那超级链接列各单元格显示的是各学校名字的超链接文本。如果既指定“文本”又指定“文本字段”,该列显示的超链接文本为“文本字段”的内容。 URL:程序运行后单击该列的超链接标记要导航去的URL。 URL字段:若单击该列不同的单元格要导航到不同的位置,就需要设置该项内容。,三、超级链接列设计(4/5),下图是以上设计的DataGrid控件的运行效果。,可以发现,使用超级链接列并不需要为此编写任何后台代码,显得简单易行。事物总有两面性,不需要编写代码当然简单,但若在导航到其他页面之前需要编写一些代码做数据处理的话,这些代码就没有可供利用的事件,这时就要使用按钮列才可以做到。,三、超级链接列设计(5/5),四、按钮列设计,设计按钮列一般也在属性生成器中进行,打开属性生成器的“列”选项,如右图。,在“可用列”中选择“按钮列”(不要展开它),将它移到“选定的列”中。再设置ButtonColumn属性, “按钮类型”选择项可选PushButton(弹压按钮)或LinkButton(链接按钮)。,五、 DataGrid控件应用之一(1/9),以下示例将水果信息展示在一个DataGrid控件中,控件有“买1公斤”和“退1公斤” 两个按钮列。另一个DataGrid控件实现显示购物车信息。效果图如下。,(一)展示商品设计 新建一个ASP.NET的Web应用程序项目,拖入2个DataGrid控件到页面,左边的DataGrid1用于展示商品,右边的DataGrid2用作显示购物车数据。使用数据连接向导将页面连接到数据库product,提取数据表fruitInfo的所有数据到数据集dataSet11中。在属性窗口指定DataGrid1的数据源为数据集dataSet11。 为控件DataGrid1确定控件的数据字段列如上图。 (二)按钮列设计 打开属性生成器的“列”选项,为控件DataGrid1加入2个按钮列“买1公斤”和“退1公斤”,设计过程同上。,五、 DataGrid控件应用之一(2/9),后台代码 首先为Form1类定义两个字段级变量,用于购物车的表对象和数据视图。 private DataTable ShopCart; private DataView ShopCartView; 页面加载时定义购物车对象,对DataGrid1和DataGrid2做数据绑定。 private void Page_Load(object sender, System.EventArgs e) if(Session“ShopCart“=null) ShopCart=new DataTable(); ShopCart.Columns.Add(new DataColumn(“编号“,typeof(string); ShopCart.Columns.Add(new DataColumn(“品名“,typeof(string); ShopCart.Columns.Add(new DataColumn(“单价“,typeof(double); ShopCart.Columns.Add(new DataColumn(“数量“,typeof(double); ShopCart.Columns.Add(new DataColumn(“金额“,typeof(double); Session“ShopCart“=ShopCart; ,五、 DataGrid控件应用之一(3/9),else ShopCart=(DataTable)Session“ShopCart“; ShopCartView=new DataView(ShopCart); DataGrid2.DataSource=ShopCartView; DataGrid2.DataBind(); if(!IsPostBack) this.Label2.Visible=false; this.Label3.Visible=false; this.LabelMoney.Visible=false; this.DataGrid2.Visible=false; sqlDataAdapter1.Fill(dataSet11,“fruitInfo“); DataGrid1.DataBind(); ,五、 DataGrid控件应用之一(4/9),按钮列“买1公斤”和“退1公斤”的CommandName属性值不是规定的标准名字,因此它们的单击事件被反升至控件 DataGrid1的ItemCommand事件中,单击【买1公斤】或【退1公斤】按钮的事件处理程序都要写在DataGrid1_ItemCommand事件中,通过判别两个按钮列的CommandName属性来区分单击的究竟是“买1公斤”还是“退1公斤”。 private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) string BH=e.Item.Cells2.Text; string PM=e.Item.Cells3.Text; double JG=double.Parse(e.Item.Cells5.Text); if(e.CommandName=“buy“) ShopCartView.Sort=“编号“; int n=ShopCartView.Find(BH); if(n=-1),五、 DataGrid控件应用之一(5/9), DataRow dr=ShopCart.NewRow(); dr“编号“=BH; dr“品名“=PM; dr“单价“=JG; dr“数量”=1; dr“金额“=JG; ShopCart.Rows.Add(dr); this.Label2.Visible=true; this.Label3.Visible=true; this.LabelMoney.Visible=true; this.DataGrid2.Visible=true; else ShopCartViewn“数量“=(double)ShopCartViewn“数量“+1; ShopCartViewn“金额“=(double)ShopCartViewn“金额“+JG; ShopCartView.Sort=null; ,五、 DataGrid控件应用之一(6/9),if(e.CommandName=“remove“) ShopCartView.Sort=“编号“; int n=ShopCartView.Find(BH); if(n=0) if(double)ShopCartViewn“数量”1) ShopCartViewn“数量“=(double)ShopCartViewn“数量“-1; ShopCart
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省病历书写与管理基本规范(2025年版)考试试题(含答案)
- 2025年质量培训试题及答案
- 土石方工程地质勘察方案
- 公路建设进度控制与协调方案
- 医院感染性疾病科建设项目社会稳定风险评估报告
- 新建茶饼萃取、茶油精炼、精深加工项目可行性研究报告模板-立项备案
- 市政管网施工区域环境影响评估方案
- PVD光学镀膜生产线项目环境影响报告书
- 绿色食品加工产业园项目环境影响报告书
- 经济开发区排水管网提升改造工程技术方案
- 【《基于Java Web的网络题库和考试系统设计与实现》8900字(论文)】
- 医院应急知识培训课件
- 2025-2030中国抗骨质疏松药物市场调研及未来增长预测报告
- 2025年注册道路工程师执业资格基础考试应试辅导(公共基础)(上下册)
- 终极焊工考试试题及答案
- 国家能源安庆市2025秋招能源与动力工程类面试追问及参考回答
- 房屋安全性鉴定培训试题及答案解析
- 临床用药监测管理制度
- (高清版)DZT 0399-2022 矿山资源储量管理规范
- 建筑工地电动车辆安全检查验收表
- CB/T 495-1995吸入口
评论
0/150
提交评论