ASPNET数据绑定技术之数据绑定课件_第1页
ASPNET数据绑定技术之数据绑定课件_第2页
ASPNET数据绑定技术之数据绑定课件_第3页
ASPNET数据绑定技术之数据绑定课件_第4页
ASPNET数据绑定技术之数据绑定课件_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据绑定技术原理ASP.NET数据绑定技术之数据绑定技术原理ASP.NET数据绑定技术之主要内容数据绑定原理GridView基础知识GridView应用实例数据绑定控件的组合使用2主要内容数据绑定原理21数据绑定原理只有知其所以然才能知其然1数据绑定原理只有知其所以然才能知其然引例:直观了解数据绑定现场编程展示(参考示例:UseDataBind)4引例:直观了解数据绑定现场编程展示(参考示例:UseData数据绑定的层次结构数据库ADO.NET数据绑定控件数据源控件5提供显示和编辑数据的可视化界面IDataSourceDataSourceView提供对数据的访问接口:增、删、改、查与数据库交互,完成信息的增、删、改、查工作。信息的存放地调用存取数据绑定的层次结构数据库ADO.NET数据绑定控件数据源控件常用的数据绑定控件控件名称说明GridView以表格的方式显示和编辑数据,DetailsView一次显示、编辑、插入或删除一条记录。默认情况下,DetailsView控件将记录的每个字段显示在它自己的一行内。FormViewFormView控件与DetailsView控件相似,一次也只能显示或编辑一条记录。FormView需要给其设定一个模板。DataList控件可以用某种用户指定的格式来显示数据(比如分列显示),这种格式由模板和样式进行定义。RepeaterRepeater控件没有包含内置的布局或样式,需要由Web开发者指定所有的用于显示数据的内部控件和显示样式ListViewASP.NET3.5新增,以嵌套容器模板和占位符的方式提供灵活的数据显示模式6常用的数据绑定控件控件名称说明GridView以表格的方式显常用的数据源控件SqlDataSource可以连接到

ADO.NET支持的任何

SQL数据库。AccessDataSource连接到使用

MicrosoftOffice创建的

Access数据库。ObjectDataSource连接到应用程序的

Bin或

App_Code目录中的中间层业务对象或数据集。XmlDataSource连接到

XML文件。SitemapDataSource连接到此应用程序的站点导航树(要求应用程序根目录处有一个有效的站点地图文件,默认的文件名为“Web.sitemap”),站点地图文件其实也是一个XML文件。LINQDataSource.NET3.0新增,可以访问各种类型的数据,包括数据库和XML文件。与C#/VB.NET等.NET语言直接集成。7常用的数据源控件SqlDataSource可以连接到ADO多种可绑定的数据对象除了绑定到数据源这种具有很强功能的对象之外,数据绑定控件还可以绑定到最小实现了IEnumerable接口的集合对象(比如数组/HashTable/List<T>)。另外,通过使用数据绑定表达式,可以将一些数据绑定控件直接与某个函数或属性进行绑定。8多种可绑定的数据对象除了绑定到数据源这种具有很强功能的对象之数据绑定的三种实现方式:将数据绑定控件的DataSourceID设定为数据源控件,数据绑定控件即可充分利用数据源控件的功能实现对数据的“增删改查”。这称为“自动数据绑定”。也可以不使用DataSourceID,而是直接将数据源赋值给数据绑定控件的DataSource属性,然后再调用数据绑定控件的DataBind()方法实现“手工数据绑定”。或者直接在页面中放置绑定表达式,然后在Page_Load中调用页面类的DataBind()方法实现数据绑定。9数据绑定的三种实现方式:将数据绑定控件的DataSource数据绑定表达式第一步:设定数据表达式

<%#数据绑定表达式%>第二步:执行Page类中的Bind()方法。Demo:UseDataBind(DataBindingExpression.aspx)10重要编程提示:直接在页面中嵌入C#代码的方法:<%=C#代码%>无需调用Page.Bind()方法,上述代码总是执行。数据绑定表达式第一步:设定数据表达式10重要编程提示:理解“数据绑定模板”由于要显示的数据通常包含多条结构类似的记录,因此,经常使用“模板(Template)”来指定单条记录的显示格式,然后,数据绑定控件自动将这一定义好的模板应用于所有要显示的记录。可以针对不同的场景定义不同的模板,比如为浏览状态显示一个只读的模板(通常用Label来表达信息),然后为编辑状态显示另一个模板(通常用TextBox来向用户提供修改信息的手段)。大多数数据绑定控件都提供了相应的方法在不同的状态间切换(比如从浏览切换到编辑状态),并会自动加载相应的模板,与此同时,还会激发相应的事件。11理解“数据绑定模板”由于要显示的数据通常包含多条结构类似的记在数据绑定模板中绑定数据(1)当一个ASP.NET控件位于一个数据绑定模板中时,可以使用Eval()方法将其的某个属性与数据源中当前数据对象的某个属性相绑定。12<ItemTemplate>ClientID:<asp:LabelID="ClientIDLabel"runat="server"Text='<%#Eval("ClientID")%>'/></ItemTemplate>Eval方法提供了一个单向的只读的数据值。这就是说,数据是从“数据源”对象单向传送给模板中的控件,没有办法修改数据源对象中的数据。在数据绑定模板中绑定数据(1)当一个ASP.NET控件位于一在数据绑定模板中绑定数据(2)当需要修改数据源中的数据时,通常采用Bind()方法实现这一功能:13<EditItemTemplate>ClientName:<asp:TextBoxID="ClientNameTextBox"runat="server"Text='<%#Bind("ClientName")%>'/></EditItemTemplate>当使用Bind方法时,用户所作的修改会被传送回数据源控件以实现更新。在数据绑定模板中绑定数据(2)当需要修改数据源中的数据时,通数据绑定实例分析Demo:UseDataBind(UseEvalAndBind.aspx)14示例要点:使用FormView控件绑定到SQLDataSource,定义其编辑和插入模板。数据绑定实例分析Demo:UseDataBind(UseE自动绑定VS手工绑定ASP.NET提供的自动数据绑定机制虽然很自动化,几乎不用编码就可以完成许多功能,然而,在实际项目中为了实现严格的分层架构和保证程序的灵活性与可控性,往往不使用自动绑定,而是手工编程实现数据绑定。下面我们将以最复杂也是最常用的GridView为例,深入介绍数据绑定控件的使用方法。15自动绑定VS手工绑定ASP.NET提供的自动数据绑定机制2GRIDVIEW基础知识以点带面,举一反三2GRIDVIEW基础知识以点带面,举一反三形成GRIDVIEW的全局观(1)GridView以表格的方式显示数据。17GridViewRow对象代表GridView控件中的一行,GridView的Rows属性代表当前显示在页面上所有GridViewRow对象的集合TableCell代表一个单元格,这是一个控件容器,其中可以放置各种ASP.NET控件。

GridViewRow对象的Cells集合代表这一行的所有单元格形成GRIDVIEW的全局观(1)GridView以表格的方形成GRIDVIEW的全局观(2)与GridView绑定的数据都具有二维表的性质。若绑定的是DataTable,则每个GridViewRow对象负责显示一个DataRow,而每个TableCell则负责显示此DataRow中特定字段的值。若绑定的是List<T>,则每个GridViewRow对象负责显示一个T类型的对象,而每个TableCell则负责显示此对象的特定属性的值。18形成GRIDVIEW的全局观(2)与GridView绑定的数数据绑定控件GRIDVIEW中的列(1)GridView中的列可以用不同方式显示数据。Gridview列对象模型19数据绑定控件GRIDVIEW中的列(1)GridView中的数据绑定控件GRIDVIEW中的列(2)BoundedField:直接与数据对象的某个“列/属性”绑定,以文本形式显示其值。HyperLinkField:根据数据对象某个列(属性)的值生成一个超链接元素(<a>)。ImageField:根据数据对象某个列(属性)的值生成一个<img>元素,显示一张图片ButtonField:显示一个按钮CommandField:其实就是拥有特定CommandName的ButtonField,完成通用的“编辑”、“删除”和“选择”功能。TemplateField:模板列,用于自定义GridView的显示界面,非常灵活与有用。20数据绑定控件GRIDVIEW中的列(2)BoundedFie图示GRIDVIEW的列与行21CommandFieldBoundedFieldheaderfooter图示GRIDVIEW的列与行21CommandFieldBoGRIDVIEW的重要事件GridView及GridViewRow会引发一系列的事件,应用好这些事件非常关键,常用的有以下几个:RowCommand:点击每行中的按钮(ButtonField)时引发,可通过CommandName区分开是哪个按钮被点击。RowDataBound:给每行绑定数据时发生,通常用它来设置模板列中特定控件的属性。RowDeleting:删除一行时发生,可以取消删除。RowUpdating:更新一行数据时发生,可以取消更新。SelectedIndexChanged

:选择的行发生改变时发生。PageIndexChanging:点击分页按钮时发生。22GRIDVIEW的重要事件GridView及GridView访问基础数据使用GridViewRow对象的DataItem属性,可以访问基础数据对象的属性GridView控件的DataKeyNames属性用于指定主键,每一行GridViewRow会生成一个DataKey对象,整个Gridview控件会有一个DataKey对象的集合(用DataKeys属性代表)。可以通过Gridview的SelectedDataKey方法获取当前选中行的DataKey对象,然后再检索键值。23访问基础数据使用GridViewRow对象的DataIte掌握GRIDVIEW编程技巧的关键牢记:GridView只负责数据的显示,它不管数据的增删改查!记住GridView对象模型:

行由哪个对象表达,列有几种类型了解GridView的常用事件,知道这些事件可由哪些对象引发,高度注意每种事件参数中包含的信息。24掌握GRIDVIEW编程技巧的关键牢记:GridView只负3GRIDVIEW应用实例3GRIDVIEW应用实例本节示例网站GRIDVIEWDEMO说明为了清晰地展示出GridView的使用技巧,实例使用手工数据绑定方式。绑定的数据来自于Clients表,对应的类为ClientInfo,GridView绑定到List<ClientInfo>集合对象。ClientInfoAccessObj对象包含一系列的方法,使用ADO.NET技术从数据库中提取与更新数据。上述两个类均放置于示例网站的App_Code文件夹下。这种网站架构也用于本系列的大实例HappyBookShop中。26本节示例网站GRIDVIEWDEMO说明为了清晰地展示出Gr实例1:自定义显示列和列标题可以让GridView只显示特定的列,并且指定列的标题。Demo:CustomizeColumns.aspx27实例1:自定义显示列和列标题可以让GridView只显示特定实例1要点:28实例1要点:28从这个例子中我们可以知道GridView会根据绑定的数据源自动创建列,这是通过反射实现的。每个列都是一种特定类型的DataControlField,可以通过设置它的一些属性来定制它的外观和行为。对于BoundedField,设定它的DataField,可以显示它所绑定的数据对象特定属性的值。29从这个例子中我们可以知道GridView会根据绑定的数据源自实例2:自定义分页当绑定到SqlDataSource时,GridView的分页功能是自动实现的,不需要编写一行代码。然而,当绑定到功能较少的数据源,比如List<T>时,就必须自己定义分页代码了,另外,分页的格式往往也希望能自定义。Demo:GridViewPaging.aspx30每页显示5条记录自定义分页按钮格式实例2:自定义分页当绑定到SqlDataSource时,Gr实例2要点:设置GridView的AllowPaging="True";PageSize="5";在GridView的PageIndexChanging事件中设置其PageIndex为新页,然后重新绑定数据实现分页。设置GridView的PagerSettings和PagerStyle属性自定义分页按钮。

31实例2要点:设置GridView的AllowPaging="从这个例子中我们知道分页时GridView会激发PageIndexChanging事件,对应地,分页完成时会激发PageIndexChanged事件。在GridView中有不少事件是这样配对的。一般来说,在“-ing”事件中,其参数e包含了重要的信息,比如分页事件中的e.NewPageIndex属性代表了新页码。而设置e.Cancel=true则可以取消这一操作。当需要修改GridView显示的数据时(比如跳转到新的一页),需要重新绑定数据。32从这个例子中我们知道分页时GridView会激发PageInGRIDVIEW自定义分页GridView具备自动分页的特性。这就是说,只要将绑定到一个数据源,并设置其每页显示的行数和要显示的页码,GridView会自动从数据源中提取数据(从开头第一页到要显示的页,然后丢弃前面的N-1页,只显示第N页)。对于List<T>,由于其实现了IList接口,因此也具备自动分页的特性。可以通过每次只提取所需要的数据来提升性能,这时需要人工编写代码来完成数据的提取工作,然后再将数据绑定到GridView。这种方法称为“自定义分页”。为达到最佳性能,往往还禁用GridView的视图状态(EnableViewState=false),完全用其他标准的ASP.NET控件来实现分页功能。33GRIDVIEW自定义分页GridView具备自动分页的特性实例2延伸:GRIDVIEW自定义分页Demo:GridViewCustomizePaging.aspx34(1)查看一下源文件,禁用ViewState可以减少多少数据量的传输!(2)GridView内置对于分页界面的定制,只需添加一个数据分页模板PagerTemplate

就可以实现同这个示例一样的功能。请通过查询MSDN实现示例的这种导航方式。实例2延伸:GRIDVIEW自定义分页Demo:GridV实例3:排序GridViewSort.aspx35即可以点击按钮,也可以点击列标题进行排序支持多列排序实例3:排序GridViewSort.aspx35即可以点击实例3要点:响应Sorting事件,在此事件中编码进行数据绑定利用委托实现对泛型数组中的对象进行排序。GridView的一个基本编程方法:喂给GridView什么样的数据,它就忠实地呈现什么样的数据。自我拓展训练:本示例是升序排列,如何让其也支持降序排列?36实例3要点:响应Sorting事件,在此事件中编码进行数据绑实例4:记录的删除GridViewDelete.aspx37实例4:记录的删除GridViewDelete.aspx37实例4要点ButtonField可以绑定到数据源以显示不同的文字,点击它GridView会引发RowCommand事件。此事件参数e有以下重要属性:e.CommandName属性表明哪个按钮被点击。e.CommandArgument属性表明是哪一行,这个值是由GridView自动填充的。e.CommandSource则代表了GridView自身。38实例4要点ButtonField可以绑定到数据源以显示不同的GRIDVIEW预定义的COMMANDNAME当一个ButtonField的CommandName是以下预定义值时,相应的事件被激发:Cancel:引发“取消”事件。Delete:引发“删除”事件Edit:引发“编辑”事件Page:引发“分页”事件Select:引发“选择”事件Sort:引发“排序”事件Update:引发“更新”事件CommandField是特殊的ButtonField,其CommandName是上述预定义值之一。39GRIDVIEW预定义的COMMANDNAME当一个Butt数据主键值的获取当需要从数据库删除记录时,需要知道要删除记录的主键。GridView有一个DataKeyNames属性,进行绑定前必须将其设置为主键值名。当需要获取主键时,根据指定行的索引,从GridView的“DataKeys[索引].Value”得到主键值。提醒:这是编程中的一个关键点!40数据主键值的获取当需要从数据库删除记录时,需要知道要删除记录实例5:查找GridViewFind.aspx41实例5:查找GridViewFind.aspx41实例5分析本实例再次采用了以下这种典型的编程方法:从数据库中取出需要的数据“喂”给GridView。对于分页:则利用了GridView的自动分页功能。通过设置其PageIndex实现分页。42实例5分析本实例再次采用了以下这种典型的编程方法:42实例6:选中并编辑记录Demo:GridViewEdit.aspx43实例6:选中并编辑记录Demo:GridViewEdit.a实例6的要点使用GridView的“选择”功能,在GridView的SelectedIndexChanging事件中显示一个编辑面板供用户修改记录。此面板完全是自定义的。SelectIndexChanging/SelectIndexChanged事件在主从表显示中很有用。注意示例程序是如何取出选中记录的当前值的。txtName.Text=GridView1.Rows[e.NewSelectedIndex].Cells[1].Text;拓展训练:

还可以利用GridView内部集成的编辑功能让其进入编辑状态,在RowEditing中完成显示编辑面板的任务。激发RowEditing事件的方法在示例网页中有说明,请同学们课后完成这一作业。44实例6的要点使用GridView的“选择”功能,在GridVGRIDVIEW的模板列简介在GridView的模板列中,可以添加各种Web控件,并通过编写代码实现特定的数据处理工作,然后再将结果显示在相应的控件中。45GRIDVIEW的模板列简介在GridView的模板列中,可实例7:模板列的应用——批处理删除一次选取多条记录进行统一处理。Demo:BatchDelete.aspx46实例7:模板列的应用——批处理删除一次选取多条记录进行统一处实例7要点汇总在模板中可以放置任意一种ASP.NET控件,从而使其成为最灵活的一种数据绑定方式,为广大开发者所喜用。当需要访问特定行中的模板列中的某个特定控件时,请使用GridViewRow对象的FindControl(“控件ID”)方法,这是一个非常重要的编程方法。GridView的Rows集合存放的是当前显示在页面上的行对象的集合。注意要使用视图状态保存当前页码,以便用户在删除记录后仍能回到上次工作的地方。GridView的DataKeyNames不要忘了设置,否则取不出主键。47实例7要点汇总在模板中可以放置任意一种ASP.NET控件,从4数据绑定控件的组合使用示例网站:DataControlsDemo4数据绑定控件的组合使用示例网站:DataControls实例1:嵌套控件在GridView模板列中嵌入其他的数据绑定控件:出版社和书名Demo:EmbodiedDataBindControl.aspx49实例1:嵌套控件在GridView模板列中嵌入其他的数据绑实例1分析DataAccessObj类负责向网页提供数据源。在GridView中创建一个模板列,其中嵌套一个BulletedList控件。GridView绑定到DataTable,在GridView的RowDataBound事件中绑定嵌套的数据控件。提示:

高度注意RowDataBound事件中代码的写法:(1)如何提取出当前行所对应的数据对象?(2)如何查找模板列中的特定控件?(3)为何要判定行的类型?50实例1分析DataAccessObj类负责向网页提供数据源。实例2:数据筛选与合计DropDownList与GridView配合实现数据筛选。Demo:DropDownListAndGridView.aspx51实例2:数据筛选与合计DropDownList与GridVi实例2要点分析DropDownList可以绑定到List<T>,注意它的DataTextField和 DataValueField两个属性。在GridView的RowDataBound中完成合计工作,并将结果动态地添加到页面上。注意其实现方法。52实例2要点分析DropDownList可以绑定到List<T实例3:主从表MasterDetail.aspx53主表显示书,从表显示读者评论实例3:主从表MasterDetail.aspx53主表显示实例3分析主表显示一个“选择”按钮,这是使用GridView内置的选择功能实现的。在主表的SelectedIndexChanging事件中取出选中行的主键,根据主键到数据库中提取记录,再绑定到从表。54实例3分析主表显示一个“选择”按钮,这是使用GridVie数据绑定技术原理ASP.NET数据绑定技术之数据绑定技术原理ASP.NET数据绑定技术之主要内容数据绑定原理GridView基础知识GridView应用实例数据绑定控件的组合使用56主要内容数据绑定原理21数据绑定原理只有知其所以然才能知其然1数据绑定原理只有知其所以然才能知其然引例:直观了解数据绑定现场编程展示(参考示例:UseDataBind)58引例:直观了解数据绑定现场编程展示(参考示例:UseData数据绑定的层次结构数据库ADO.NET数据绑定控件数据源控件59提供显示和编辑数据的可视化界面IDataSourceDataSourceView提供对数据的访问接口:增、删、改、查与数据库交互,完成信息的增、删、改、查工作。信息的存放地调用存取数据绑定的层次结构数据库ADO.NET数据绑定控件数据源控件常用的数据绑定控件控件名称说明GridView以表格的方式显示和编辑数据,DetailsView一次显示、编辑、插入或删除一条记录。默认情况下,DetailsView控件将记录的每个字段显示在它自己的一行内。FormViewFormView控件与DetailsView控件相似,一次也只能显示或编辑一条记录。FormView需要给其设定一个模板。DataList控件可以用某种用户指定的格式来显示数据(比如分列显示),这种格式由模板和样式进行定义。RepeaterRepeater控件没有包含内置的布局或样式,需要由Web开发者指定所有的用于显示数据的内部控件和显示样式ListViewASP.NET3.5新增,以嵌套容器模板和占位符的方式提供灵活的数据显示模式60常用的数据绑定控件控件名称说明GridView以表格的方式显常用的数据源控件SqlDataSource可以连接到

ADO.NET支持的任何

SQL数据库。AccessDataSource连接到使用

MicrosoftOffice创建的

Access数据库。ObjectDataSource连接到应用程序的

Bin或

App_Code目录中的中间层业务对象或数据集。XmlDataSource连接到

XML文件。SitemapDataSource连接到此应用程序的站点导航树(要求应用程序根目录处有一个有效的站点地图文件,默认的文件名为“Web.sitemap”),站点地图文件其实也是一个XML文件。LINQDataSource.NET3.0新增,可以访问各种类型的数据,包括数据库和XML文件。与C#/VB.NET等.NET语言直接集成。61常用的数据源控件SqlDataSource可以连接到ADO多种可绑定的数据对象除了绑定到数据源这种具有很强功能的对象之外,数据绑定控件还可以绑定到最小实现了IEnumerable接口的集合对象(比如数组/HashTable/List<T>)。另外,通过使用数据绑定表达式,可以将一些数据绑定控件直接与某个函数或属性进行绑定。62多种可绑定的数据对象除了绑定到数据源这种具有很强功能的对象之数据绑定的三种实现方式:将数据绑定控件的DataSourceID设定为数据源控件,数据绑定控件即可充分利用数据源控件的功能实现对数据的“增删改查”。这称为“自动数据绑定”。也可以不使用DataSourceID,而是直接将数据源赋值给数据绑定控件的DataSource属性,然后再调用数据绑定控件的DataBind()方法实现“手工数据绑定”。或者直接在页面中放置绑定表达式,然后在Page_Load中调用页面类的DataBind()方法实现数据绑定。63数据绑定的三种实现方式:将数据绑定控件的DataSource数据绑定表达式第一步:设定数据表达式

<%#数据绑定表达式%>第二步:执行Page类中的Bind()方法。Demo:UseDataBind(DataBindingExpression.aspx)64重要编程提示:直接在页面中嵌入C#代码的方法:<%=C#代码%>无需调用Page.Bind()方法,上述代码总是执行。数据绑定表达式第一步:设定数据表达式10重要编程提示:理解“数据绑定模板”由于要显示的数据通常包含多条结构类似的记录,因此,经常使用“模板(Template)”来指定单条记录的显示格式,然后,数据绑定控件自动将这一定义好的模板应用于所有要显示的记录。可以针对不同的场景定义不同的模板,比如为浏览状态显示一个只读的模板(通常用Label来表达信息),然后为编辑状态显示另一个模板(通常用TextBox来向用户提供修改信息的手段)。大多数数据绑定控件都提供了相应的方法在不同的状态间切换(比如从浏览切换到编辑状态),并会自动加载相应的模板,与此同时,还会激发相应的事件。65理解“数据绑定模板”由于要显示的数据通常包含多条结构类似的记在数据绑定模板中绑定数据(1)当一个ASP.NET控件位于一个数据绑定模板中时,可以使用Eval()方法将其的某个属性与数据源中当前数据对象的某个属性相绑定。66<ItemTemplate>ClientID:<asp:LabelID="ClientIDLabel"runat="server"Text='<%#Eval("ClientID")%>'/></ItemTemplate>Eval方法提供了一个单向的只读的数据值。这就是说,数据是从“数据源”对象单向传送给模板中的控件,没有办法修改数据源对象中的数据。在数据绑定模板中绑定数据(1)当一个ASP.NET控件位于一在数据绑定模板中绑定数据(2)当需要修改数据源中的数据时,通常采用Bind()方法实现这一功能:67<EditItemTemplate>ClientName:<asp:TextBoxID="ClientNameTextBox"runat="server"Text='<%#Bind("ClientName")%>'/></EditItemTemplate>当使用Bind方法时,用户所作的修改会被传送回数据源控件以实现更新。在数据绑定模板中绑定数据(2)当需要修改数据源中的数据时,通数据绑定实例分析Demo:UseDataBind(UseEvalAndBind.aspx)68示例要点:使用FormView控件绑定到SQLDataSource,定义其编辑和插入模板。数据绑定实例分析Demo:UseDataBind(UseE自动绑定VS手工绑定ASP.NET提供的自动数据绑定机制虽然很自动化,几乎不用编码就可以完成许多功能,然而,在实际项目中为了实现严格的分层架构和保证程序的灵活性与可控性,往往不使用自动绑定,而是手工编程实现数据绑定。下面我们将以最复杂也是最常用的GridView为例,深入介绍数据绑定控件的使用方法。69自动绑定VS手工绑定ASP.NET提供的自动数据绑定机制2GRIDVIEW基础知识以点带面,举一反三2GRIDVIEW基础知识以点带面,举一反三形成GRIDVIEW的全局观(1)GridView以表格的方式显示数据。71GridViewRow对象代表GridView控件中的一行,GridView的Rows属性代表当前显示在页面上所有GridViewRow对象的集合TableCell代表一个单元格,这是一个控件容器,其中可以放置各种ASP.NET控件。

GridViewRow对象的Cells集合代表这一行的所有单元格形成GRIDVIEW的全局观(1)GridView以表格的方形成GRIDVIEW的全局观(2)与GridView绑定的数据都具有二维表的性质。若绑定的是DataTable,则每个GridViewRow对象负责显示一个DataRow,而每个TableCell则负责显示此DataRow中特定字段的值。若绑定的是List<T>,则每个GridViewRow对象负责显示一个T类型的对象,而每个TableCell则负责显示此对象的特定属性的值。72形成GRIDVIEW的全局观(2)与GridView绑定的数数据绑定控件GRIDVIEW中的列(1)GridView中的列可以用不同方式显示数据。Gridview列对象模型73数据绑定控件GRIDVIEW中的列(1)GridView中的数据绑定控件GRIDVIEW中的列(2)BoundedField:直接与数据对象的某个“列/属性”绑定,以文本形式显示其值。HyperLinkField:根据数据对象某个列(属性)的值生成一个超链接元素(<a>)。ImageField:根据数据对象某个列(属性)的值生成一个<img>元素,显示一张图片ButtonField:显示一个按钮CommandField:其实就是拥有特定CommandName的ButtonField,完成通用的“编辑”、“删除”和“选择”功能。TemplateField:模板列,用于自定义GridView的显示界面,非常灵活与有用。74数据绑定控件GRIDVIEW中的列(2)BoundedFie图示GRIDVIEW的列与行75CommandFieldBoundedFieldheaderfooter图示GRIDVIEW的列与行21CommandFieldBoGRIDVIEW的重要事件GridView及GridViewRow会引发一系列的事件,应用好这些事件非常关键,常用的有以下几个:RowCommand:点击每行中的按钮(ButtonField)时引发,可通过CommandName区分开是哪个按钮被点击。RowDataBound:给每行绑定数据时发生,通常用它来设置模板列中特定控件的属性。RowDeleting:删除一行时发生,可以取消删除。RowUpdating:更新一行数据时发生,可以取消更新。SelectedIndexChanged

:选择的行发生改变时发生。PageIndexChanging:点击分页按钮时发生。76GRIDVIEW的重要事件GridView及GridView访问基础数据使用GridViewRow对象的DataItem属性,可以访问基础数据对象的属性GridView控件的DataKeyNames属性用于指定主键,每一行GridViewRow会生成一个DataKey对象,整个Gridview控件会有一个DataKey对象的集合(用DataKeys属性代表)。可以通过Gridview的SelectedDataKey方法获取当前选中行的DataKey对象,然后再检索键值。77访问基础数据使用GridViewRow对象的DataIte掌握GRIDVIEW编程技巧的关键牢记:GridView只负责数据的显示,它不管数据的增删改查!记住GridView对象模型:

行由哪个对象表达,列有几种类型了解GridView的常用事件,知道这些事件可由哪些对象引发,高度注意每种事件参数中包含的信息。78掌握GRIDVIEW编程技巧的关键牢记:GridView只负3GRIDVIEW应用实例3GRIDVIEW应用实例本节示例网站GRIDVIEWDEMO说明为了清晰地展示出GridView的使用技巧,实例使用手工数据绑定方式。绑定的数据来自于Clients表,对应的类为ClientInfo,GridView绑定到List<ClientInfo>集合对象。ClientInfoAccessObj对象包含一系列的方法,使用ADO.NET技术从数据库中提取与更新数据。上述两个类均放置于示例网站的App_Code文件夹下。这种网站架构也用于本系列的大实例HappyBookShop中。80本节示例网站GRIDVIEWDEMO说明为了清晰地展示出Gr实例1:自定义显示列和列标题可以让GridView只显示特定的列,并且指定列的标题。Demo:CustomizeColumns.aspx81实例1:自定义显示列和列标题可以让GridView只显示特定实例1要点:82实例1要点:28从这个例子中我们可以知道GridView会根据绑定的数据源自动创建列,这是通过反射实现的。每个列都是一种特定类型的DataControlField,可以通过设置它的一些属性来定制它的外观和行为。对于BoundedField,设定它的DataField,可以显示它所绑定的数据对象特定属性的值。83从这个例子中我们可以知道GridView会根据绑定的数据源自实例2:自定义分页当绑定到SqlDataSource时,GridView的分页功能是自动实现的,不需要编写一行代码。然而,当绑定到功能较少的数据源,比如List<T>时,就必须自己定义分页代码了,另外,分页的格式往往也希望能自定义。Demo:GridViewPaging.aspx84每页显示5条记录自定义分页按钮格式实例2:自定义分页当绑定到SqlDataSource时,Gr实例2要点:设置GridView的AllowPaging="True";PageSize="5";在GridView的PageIndexChanging事件中设置其PageIndex为新页,然后重新绑定数据实现分页。设置GridView的PagerSettings和PagerStyle属性自定义分页按钮。

85实例2要点:设置GridView的AllowPaging="从这个例子中我们知道分页时GridView会激发PageIndexChanging事件,对应地,分页完成时会激发PageIndexChanged事件。在GridView中有不少事件是这样配对的。一般来说,在“-ing”事件中,其参数e包含了重要的信息,比如分页事件中的e.NewPageIndex属性代表了新页码。而设置e.Cancel=true则可以取消这一操作。当需要修改GridView显示的数据时(比如跳转到新的一页),需要重新绑定数据。86从这个例子中我们知道分页时GridView会激发PageInGRIDVIEW自定义分页GridView具备自动分页的特性。这就是说,只要将绑定到一个数据源,并设置其每页显示的行数和要显示的页码,GridView会自动从数据源中提取数据(从开头第一页到要显示的页,然后丢弃前面的N-1页,只显示第N页)。对于List<T>,由于其实现了IList接口,因此也具备自动分页的特性。可以通过每次只提取所需要的数据来提升性能,这时需要人工编写代码来完成数据的提取工作,然后再将数据绑定到GridView。这种方法称为“自定义分页”。为达到最佳性能,往往还禁用GridView的视图状态(EnableViewState=false),完全用其他标准的ASP.NET控件来实现分页功能。87GRIDVIEW自定义分页GridView具备自动分页的特性实例2延伸:GRIDVIEW自定义分页Demo:GridViewCustomizePaging.aspx88(1)查看一下源文件,禁用ViewState可以减少多少数据量的传输!(2)GridView内置对于分页界面的定制,只需添加一个数据分页模板PagerTemplate

就可以实现同这个示例一样的功能。请通过查询MSDN实现示例的这种导航方式。实例2延伸:GRIDVIEW自定义分页Demo:GridV实例3:排序GridViewSort.aspx89即可以点击按钮,也可以点击列标题进行排序支持多列排序实例3:排序GridViewSort.aspx35即可以点击实例3要点:响应Sorting事件,在此事件中编码进行数据绑定利用委托实现对泛型数组中的对象进行排序。GridView的一个基本编程方法:喂给GridView什么样的数据,它就忠实地呈现什么样的数据。自我拓展训练:本示例是升序排列,如何让其也支持降序排列?90实例3要点:响应Sorting事件,在此事件中编码进行数据绑实例4:记录的删除GridViewDelete.aspx91实例4:记录的删除GridViewDelete.aspx37实例4要点ButtonField可以绑定到数据源以显示不同的文字,点击它GridView会引发RowCommand事件。此事件参数e有以下重要属性:e.CommandName属性表明哪个按钮被点击。e.CommandArgument属性表明是哪一行,这个值是由GridView自动填充的。e.CommandSource则代表了GridView自身。92实例4要点ButtonField可以绑定到数据源以显示不同的GRIDVIEW预定义的COMMANDNAME当一个ButtonField的CommandName是以下预定义值时,相应的事件被激发:Cancel:引发“取消”事件。Delete:引发“删除”事件Edit:引发“编辑”事件Page:引发“分页”事件Select:引发“选择”事件Sort:引发“排序”事件Update:引发“更新”事件CommandField是特殊的ButtonField,其CommandName是上述预定义值之一。93GRIDVIEW预定义的COMMANDNAME当一个Butt数据主键值的获取当需要从数据库删除记录时,需要知道要删除记录的主键。GridView有一个DataKeyNames属性,进行绑定前必须将其设置为主键值名。当需要获取主键时,根据指定行的索引,从GridView的“DataKeys[索引].Value”得到主键值。提醒:这是编程中的一个关键点!94数据主键值的获取当需要从数据库删除记录时,需要知道要删除记录实例5:查找GridViewFind.aspx95实例5:查找GridViewFind.aspx41实例5分析本实例再次采用了以下这种典型的编程方法:从数据库中取出需要的数据“喂”给GridV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论