




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ASP.NET数据访问技术2023年7月17日层次结构就ASP.NET的数据访问技术来说,其数据操作思路基本上可以分为三层,即数据提供层-》数据源控件层-》数据绑定控件层。其最底层为数据提供层,即数据源,数据源可以是关系数据库,也可以是类和对象结构中间层为各类数据源控件,主要包括SqlDatasource、ObjectDatasource、LinqDatasource等最上层即用户界面层,ASP.NET通过数据绑定控件访问数据源控件提供的数据操作,实现数据不同形式的显示和编辑,常用的数据绑定控件包括GridView、DetailsView、FormView、ListView等层次结构数据源控件都在一定程度上对数据操作进行了封装数据绑定控件需要调用数据源控件功能时,仅需将DataSourceID属性设置为数据源控件的ID,提供相应的参数即可SqlDataSource数据源控件SqlDataSource控件使用ADO.NET类与ADO.NET支持的数据库进行交互,它可以访问多种类型的数据库MicrosoftSQLServer数据库(使用System.Data.SqlClient提供程序),Oracle数据库(使用System.Data.OracleClient提供程序)、ODBC数据源(使用System.Data.Odbc提供程序),OleDb数据源(使用System.Data.OleDb提供程序)设置其ProviderName(默认为“System.Data.SqlClient)SqlDataSource数据源控件SqlDataSource控件使用ADO.NET类与ADO.NET支持的数据库进行交互,它可以访问多种类型的数据库MicrosoftSQLServer数据库(使用System.Data.SqlClient提供程序),Oracle数据库(使用System.Data.OracleClient提供程序)、ODBC数据源(使用System.Data.Odbc提供程序),OleDb数据源(使用System.Data.OleDb提供程序)设置其ProviderName(默认为“System.Data.SqlClient)SqlDataSource数据源控件SqlDataSource使用ADO.NET技术来访问数据源,开发人员只需设置连接字符串数据检索<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
DataSourceMode="DataReader"ConnectionString="<%$
ConnectionStrings:MyNorthwind%>"
SelectCommand="SELECTLastNameFROMEmployees"></asp:SqlDataSource>SqlDataSource数据源控件数据检索CREATEPROCEDUREsp_GetAllEmployeesASSELECTLastNameFROMEmployees;GO此时将SelectCommand属性设置为“sp_GteAllEmployees”,可以检索同样的数据,但是需要同时将SelectCommandType属性(SqlDataSourceCommandType枚举类型)设置为StoredProcedure,默认情况下,它被设置为TextSqlDataSource数据源控件数据检索SqlDataSource控件可以返回两种类型的数据集,DataReader和DataSetDataReader数据集对象一般用于简单的读取数据操作,它效率较高,但不支持缓存等其他复杂操作。DataSet对象可以为数据集建立一个完整的内存映像,从而支持排序、筛选、分页等复杂操作SqlDataSource控件使用DataSourceMode属性SqlDataSource数据源控件数据检索<asp:SqlDataSource
ID="SqlDataSource1"
runat="server"
ConnectionString="<%$
ConnectionStrings:MyNorthwind%>"
SelectCommand="SELECTLastNameFROMEmployeesWHERETitle=@Title">
<SelectParameters>
<asp:ControlParameter
Name="Title"
ControlID="DropDownList1"
PropertyName="SelectedValue"
/>
</SelectParameters></asp:SqlDataSource>SqlDataSource数据源控件数据检索SQL命令语句的参数可以有多种来源,如Parameter对象、Web服务器控件、Cookie、会话状态(Session)、网页窗体字段(FormField)、网页查询字符串(QueryString)等。SqlDataSource数据源控件SQL命令语句的参数Parameter类Name(参数名称)、Type(参数类型)、Direction(参数方向,ParameterDirection类型)和DefaultValue(默认值)Size属性DbType属性ConvertEmptyStringToNullSqlDataSource数据源控件SQL命令语句的参数ControlParameter类指示从运行时的控件获取参数的值,可以使用它的ControlID属性设置要获取属性值的控件ID使用PropertyName指定获取参数值的属性名称控件的ControlValuePropertyAttribute属性日历控件(Calendar)的SelectedDate、GridView控件的SelectedValueSqlDataSource数据源控件SQL命令语句的参数SessionParameter类的对象指示从当前的会话状态(Session)中获取变量的值作为参数值,变量名称由SessionField属性指定。CookieParameter指定从页面请求的HTTPCookie中获取参数的值,CookieName属性设定标识使用的HttpCookie对象的名称。QueryStringParameter定义的参数从页面HTTP请求的查询字符串字段中获取参数的值,其QueryStringField属性用于设定查询字符串中的字段名称。Pro定义的参数从配置文件中获取参数值,其PropertyName指定了配置文件中对应的属性的名称。FormParameter定义的属性会尝试从HTTP请求的窗体对象的字段中获取参数值,可以使用FormField属性指定窗体字段的名称。SqlDataSource数据源控件数据检索在SqlDataSource控件运行时,会将所有的参数包含在一个SelectParameters集合属性(ParameterCollection类型)中以供检索和修改。SqlDataSource数据源控件数据操作原理SqlDataSource仅是作为一个公开的数据操作接口,它的数据操作事实上都委托给一个SqlDataSourceView类的对象执行数据源控件一般从DataSourceControl派生,要求实现一个IDataSource接口,最主要的是实现GetViewNames和GetView两个方法SqlDataSource数据源控件数据操作原理DataSourceView一些判断数据源支持的操作类型的属性CanUpdate(能否更新)、CanInsert(能否插入)、CanDelete(能否删除)、CanPage(能否分页)、CanSort(能否排序)、CanRetrieveTotalRowCount(能偶检索源数据中的记录总数)实现数据操作的各种方法ExecuteSelect(检索数据)、ExecuteUpdate(更新数据)、ExecuteInsert(插入数据)、ExecuteCommand(执行命令)(这些方法会返回操作影响的记录行数)这些操作也可以采用异步模式完成,但是要改为调用Select、Update、Insert、Delete等方法(注意它们不会返回任何值)SqlDataSource数据源控件数据操作原理SqlDataSource控件使用的视图类为SqlDataSourceView它重写了CanUpdate、CanInsert、CanDelete、CanPage、CanSort、CanRetieveTotalRowCount等属性和ExecuteSelect、ExecuteUpdate、ExecuteInsert和ExecuteDelete等方法SqlDataSource数据源控件数据操作原理SqlDataSource控件使用的视图类为SqlDataSourceView增加了SelectCommand、SelectCommandType和SelectParameters等用于提供数据检索信息的属性,UpdateCommand、UpdateCommandType和UpdateParameters等设置记录更新信息的属性,InsertCommand、InsertCommandType和InsertParameters等设置记录插入信息的属性,DeleteCommand、DeleteCommandType和DeleteParameters等设置记录删除信息的属性,FilterExpression和FilterParameters等用于设置记录筛选信息的属性,SortParameterName(仅用于检索命令为存储过程时)等用于设置数据排序信息的属性。继承了DataSourceView类的Select、Update、Insert、Delete等异步操作方法SqlDataSource数据源控件数据检索在执行数据检索之前,会首先引发一个Selecting事件,传送一个SqlDataSourceSelectingEventArgs类型的参数(从SqlDataSourceCommandEventArgs类派生)Cancel属性参数的Commmand属性可以返回数据操作所使用的DbCommand对象Arguments属性可以返回传递给Select方法的DataSourceSelectArguments对象。SqlDataSource数据源控件数据检索SqlDataSource控件的Select方法可以返回两种类型的数据(使用IEnumerable类型返回),当DataSourceMode属性设置为“DataSet”时,它将返回一个DataView对象,当设置为“DataReader”时,它会返回一个IDataReader对象。SqlDataSource数据源控件数据检索完成数据检索后,SqlDataSource(或者SqlDataSourceView)控件会引发Selected事件,向事件处理程序传送一个SqlDataSourceStatusEventArgs类型的参数AffectedRowsCommandException(实际上它将真正的异常放在其InnerException属性中)ExceptionHandledCancelSelectOnNullParameterSqlDataSource数据源控件记录的更新、插入和删除操作SqlDataSource控件将相应的属性信息传递给关联的SqlDataSourceView控件,然后使用SqlDataSourceView控件的相应方法Update、Insert、Delete等完成更新、插入、删除等操作。如在数据绑定控件调用SqlDataSourceView对象的数据操作功能时候,会将Keys、Values、OldValues、NewValues等包含字段信息的字典传送给SqlDataSourceView对象的ExecuteUpdate、ExecuteInsert、ExecuteDelete方法,这些方法会根据传递的参数以及SqlDataSource的UpdateCommand、InsertCommandType、DeleteParameters等属性信息建立相应的DbCommand命令,使用数据连接完成相应的数据操作,返回数据操作的输出参数,并捕获数据操作中可能发生的异常。SqlDataSource数据源控件记录的更新、插入和删除操作在数据更新或删除操作时,出于操作的需要,数据绑定控件可能会同时传递字段的原始值和修改后的值,此时为了区分两者,可以设置OldValuesParameterFormatString属性,如将其设置为“old_{0}”时,名称前缀为old的参数将被字段的原始值而不是当前值取代,如下例:UPDATETable1SETLastModifiedDate=@LastModifiedDate
WHEREKey=@KeyANDLastModifiedDate=@old_LastModifiedDateSqlDataSource数据源控件记录的更新、插入和删除操作在数据更新、插入和删除操作之前,SqlDataSourceView对象会分别引发Updating、Inserting和Deleting事件,向事件处理程序传递一个SqlDataSourceCommandEventArgs类型的参数Cancel属性Command属性SqlDataSource数据源控件记录的更新、插入和删除操作在更新、插入和删除操作完成后,SqlDataSourceView对象会分别引发Updated、Inserted、Deleted事件,传递的参数类型与Selected事件中相同实际上,SqlDataSourceView使用OnDeleted、OnDataSourceViewChanged方法引发相应的事件,这些方法也可以直接调用。SqlDataSource数据源控件排序、筛选和分页可以考虑为SelectCommand属性中的Select语句添加OrderBy字句当SelectCommandType为StoredProcedure时,可以使用SortParameterName属性指定一个参数Select方法通过DataSourceSelectArguments类参数对象的SortExpression属性为Select方法传递一个排序表达式SqlDataSource数据源控件排序、筛选和分页SqlDataSourceView对象也可以使用DataView.RowFilter属性实现数据的筛选,只要设置了控件的FilterExpression和FilterParameters属性<asp:SqlDataSource
ID="SqlDataSource2"
EnableCaching="true"
DataSourceMode="DataSet"
runat="server"
ConnectionString="<%$ConnectionStrings:NorthwindConnectionString1%>"
SelectCommand="Select*fromCustomers"
FilterExpression="country='{0}'">
<FilterParameters>
<asp:ControlParameter
Name="countryparam"
ControlID="DropDownList1"
PropertyName="SelectedValue"
/>
</FilterParameters></asp:SqlDataSource>SqlDataSource数据源控件排序、筛选和分页在进行数据筛选之前,SqlDataSourceView还会引发一个Filtering事件,传递一个SqlDataSourceFilteringEventArgs类型的参数Cancel属性ParameterValues(IorderedDictionary类型)包含了FilterParametes中定义的各个参数SqlDataSourceView尚不支持分页GridView数据绑定控件GridView控件使用表格的形式来显示和修改记录数据,如下图所示(图7.3),它可以实现记录的显示、编辑和删除操作,但是不能添加记录,它同时还支持记录显示的排序和分页操作。GridView数据绑定控件标题列标头行列脚注行页导航行数据行GridView控件的构成GridView控件的行对象GridView控件实际上由若干个GridViewRow行对象构成数据行(DataRow)、标头行(Header)、脚注行(Footer)、EmptyDataRow(空数据行)、页导航行(Pager)和分隔符行(Separator)RowType属性(DataControlRowType类型的枚举值)可以通过GridView控件的Rows(数据行集合)、HeaderRow(标头行)、FooterRow(脚注行)、TopPagerRow(顶部页导航行)、BottomPagerRow(底部页导航行)等属性来获得这些行或行集合的引用GridView控件的构成GridView控件的行对象RowState属性返回行的当前状态(DataControlRowState类型的枚举)正常默认状态(Normal)、交替行状态(Alternate)、选中状态(Selected)和编辑状态(Edit)GridView控件的构成单元格每个GridViewRow对象又由若干单元格(TableCell)对象构成(通过Cells集合属性引用)RowSpan和ColumnSpanText属性格式设置(HorizontalAlign属性和VerticalAlign属性,Wrap属性)Controls集合或者FindControl方法来获取特定控件的引用GridView控件的构成GridView控件的列对象创建行对象时候,实际上是根据Columns属性中包含的DataControlField对象集合来确定每个字段的显示和绑定方式ShowHeader(是否显示标头)、HeadText(标头文本)、HeadImageUrl(标头中显示图像的URL,优先于HeaderText属性)、HeaderStyle(标头样式)、FooterText(脚注文本)、FooterStyle(脚注样式)、ItemStyle(显示文本的样式)InsertVisibleTableItemStyle(从基础的Style类派生)类型的对象GridView控件的构成类别属性用途说明显示和样式判断Visible是否显示
IsEmpty是否已定义样式元素
Wrap是否换行显示
大小和对齐方式Hight高度
Width宽度
HorizontalAlign水平对齐方式HorizontalAlign枚举类型VerticalAlign垂直对齐方式VerticalAlign枚举类型显示颜色ForeColor前景色System.Drawing.Color类型BackColor背景色System.Drawing.Color类型边框设置BorderColor边框颜色System.Drawing.Color类型BorderWidth边框宽度
BorderStyle边框样式BorderStyle枚举类型字体设置Font字体对象FontInfo类型GridView控件的构成DataControlField的几个派生类BoundField对象使用文本形式来显示和绑定的字段,仅需将其DataField属性设置为需要绑定的字段名称即可NullDisplayTextConvertEmptyStringToNullReadOnlyDataFormatString{0:C3}258.4321显示为货币格式$258.432如果希望在编辑模式下也应用格式化设置,需要将ApplayFormatInEditMode属性设置为trueGridView控件的构成DataControlField的几个派生类CheckBoxField对象显示一个复选框,主要用于绑定布尔型的字段,它其实派生自BoundField绑定的字段必须是布尔型的,或者可以由Bool.Parse方法解析为布尔型TextGridView控件的构成DataControlField的几个派生类ButtonField对象GridView和DetailsView等控件会自动监视按钮的点击事件,根据被点击按钮的CommandName属性执行不同的操作Edit(编辑)、Cancel(取消)、Delete(删除)、New(添加)、Update(更新)、Select(选择)、Insert(插入)、Sort(排序)和Page(分页)ButtonField类的列字段将会在每行该字段的位置显示一个按钮,单击按钮会引发RowCommand事件(GridView控件)或ItemCommand事件(DetailsView控件)按钮可以有三种类型—普通按钮(Button),图像(Image),链接(Link)ButtonType属性DataTextField,ImageUrl,DataTextFormatStringGridView控件的构成DataControlField的几个派生类ImageField对象显示一个图像,显示图像的URL使用DataImageUrlField和DataImageUrlFormatString两个属性来指定 <asp:ImageField
DataImageUrlField="FirstName,LastName“ DataImageUrlFormatString="~\Images\{0}+{1}.jpg"/〉AlternateText,DataAlternateTextField和DataAlternateTextFormatStringNullImageUrl,NullDisplayTextConvertEmptyStringToNull,ReadOnlyGridView控件的构成DataControlField的几个派生类HyperLinkField对象显示一个超链接,通常用于导航到其他相关网页静态模式NavigateUrl动态导航,可以使用DataNavigateUrlFields和DataNavigateUrlFormatString属性<asp:HyperlinkField
DataNavigateUrlFields="ProductID"
DataNavigateUrlFormatString="~\details.aspx?ProductID={0}"
Target="_blank"
/>GridView控件的构成DataControlField的几个派生类HyperLinkField对象显示一个超链接,通常用于导航到其他相关网页静态模式NavigateUrl动态导航,可以使用DataNavigateUrlFields和DataNavigateUrlFormatString属性<asp:HyperlinkField
DataNavigateUrlFields="ProductID"
DataNavigateUrlFormatString="~\details.aspx?ProductID={0}"
Target="_blank"
/>
<asp:
HyperlinkField
DataTextField="UnitPrice“
DataTextFormatString="{0:C}"
/>GridView控件的构成DataControlField的几个派生类CommandField对象能够自动显示选择、编辑、新建、删除等按钮,只需要设置相应的属性—ShowSelectButton,ShowEditButton,ShowInsertButton(仅用于DetailsView控件),ShowDeleteButton。ButtonType可以显示文本标题,也可以显示图像SelectText、EditText、NewText、DeleteText、UpdateText、CancelText、InsertTextSelectImageUrl、EditImageUrl等GridView控件的构成DataControlField的几个派生类TemplateField对象<asp:TemplateField
HeaderText="Author">
<ItemTemplate>
<asp:Image
ID="LeftAuthorImage"
ImageUrl='<%#Eval("zip")%>'
AlternateText="AuthorPhoto"
runat="server"
/>
<asp:Label
ID="LeftFirstNameLabel"
Text='<%#Eval("au_fname")%>'
runat="server"
/>
<asp:Label
ID="LeftLastNameLabel"
Text='<%#Eval("au_lname")%>'
runat="server"
/>
</ItemTemplate></asp:TemplateField>GridView控件的构成DataControlField的几个派生类TemplateField对象<AlternatingItemTemplate>
<asp:Label
ID="RightFirstNameLabel"
Text='<%#Eval("au_fname")%>'
runat="server"
/>
<asp:Label
ID="RightLastNameLabel"
Text='<%#Eval("au_lname")%>'
runat="server"
/>
<asp:Image
ID="RightAuthorImage"
ImageUrl='<%#Eval("zip")%>'
AlternateText="AuthorPhoto"
runat="server"
/></AlternatingItemTemplate>GridView控件的构成DataControlField的几个派生类TemplateField对象<asp:TemplateField
HeaderText="LastName">
<ItemTemplate>
<%#Eval("au_lname")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="LastNameTextBox"
Text='<%#Bind("au_lname")%>'
runat="server"
/>
</EditItemTemplate></asp:TemplateField>GridView控件的构成DataControlField的几个派生类TemplateField对象EditTemplate用于定义该字段在行的编辑状态下显示的内容,InsertTemplate用于定义该字段在插入模式下的显示内容,HeaderTemplate用于定义标题行的显示内容,FooterTemplate用于定义脚注行的显示内容。ConvertEmptyStringToNull属性GridView控件的数据操作数据的检索和显示DataSourceID属性源数据一般为DataSet、DataTable等规范类型--DataView对象其他集合类型的源数据(如实现了IEnumerable接口的集合)GridView控件将使用反射技术获取源数据的字段名称、类型等信息,然后根据Columns属性中各个DataControlField列的设置来生成每个GridViewRow行。GridView控件的数据操作数据的检索和显示每完成一个GridViewRow数据行的创建工作后,GridView控件会引发RowCreated事件修改行的外观如ForeColor、BackColor、BorderStyle等属性使用的参数类为GridViewRowEventArgs,它的Row属性返回了当前创建的GridViewRow类型的行对象行创建完成后,GridView控件会将各个内含控件绑定到相应的字段,然后引发RowDataBound事件修改行中控件绑定的数据内容与RowCreated事件使用的参数类相同GridView控件的数据操作数据的检索和显示实现选择操作可以在GridView的Columns集合中创建一个ButtonField字段,将其CommandName属性设置为“Select”,也可以添加一个CommandField字段,将其ShowSelectButton属性设置为TrueSelectIndexChanging事件,GridViewSelectEventArgs类型的参数Cancel属性NewSelectedIndex属性SelectedIndexChanged事件SelectedRow,SelectedIndex,SelectedDataKey,SelectedValueGridView控件的数据操作数据的排序将AllowSorting属性设置为true在列标题中会显示LinkButton控件,同时将每一个列字段DataControlField的SortExpression设置为该列绑定的数据字段的名称。Sorting事件,传递一个GridViewSortEventArgs类型的参数Cancel属性SortExpression,SortDirectionSorted事件GridView控件的SortExpression和SortDirection属性GridView控件的数据操作数据的分页PageIndex属性或SetPageIndex方法,PageCount属性支持两种类型的分页设置设置PagerSettings属性Mode属性,PageButtonCount,NextPageText、PreviousPageText、FirstPageText、LastPageText,NextPageImageUrl、PreviousPageImageUrl、FirstPageImageUrl和LastPageImageUrl,Position,TopPagerRow,BottomPagerRowGridView控件的数据操作数据的分页支持两种类型的分页设置PagerTemplate模板包含一些按钮,将这些按钮的CommandName属性设置为“Page”CommandArgument属性:First(导航到第一页)、Last(导航到最后一页)、Prev(导航到上一页)、Next(导航到下一页)、数字(导航到数字指定的页)PageIndexChanging事件,GridViewPageEventArgs类型的参数Cancel属性NewPageIndexPageIndexChanged事件PageIndexGridView控件的数据操作数据的编辑和删除EditIndex属性设置为非-1CommandName为“Edit”按钮添加了一个CommandField字段并将其ShowEditButton属性设置为trueGridView控件的数据操作GridView控件的数据操作数据的编辑和删除不同的列字段对象会使用不同的方式显示编辑界面BoundField会根据绑定字段的数据类型显示适当的编辑控件TemplateField将根据EditItemTemplate模板显示定义的编辑控件RowEditing事件,GridViewEditEventArgs类型的参数Cancel属性,NewEditIndex属性RowUpdating事件,GridViewUpdateEventArgs类型的参数Cancel属性三个IorederedDictionary类型的字典集合Keys,OldValues和NewValuesRowUpdated事件,GridViewUpdatedEventArgs类型的参数Exception属性,ExceptionHandled属性,AffectedRows属性,KeepInEditMode三个字典Keys,OldValues和NewValuesRowCancelingEdit事件,GridViewCancelEditEventArgs类型的参数Cancel属性,RowIndex属性GridView控件的数据操作数据的编辑和删除RowDeleting事件,GridViewDeleteEventArgs类型的参数Cancel属性,RowIndex属性Keys,OldValuesRowDeleted事件,GridViewDeletedEventArgs类型的参数AffectedRows,Exception和ExceptionHandledKeys和OldKeys字典RowCommand事件,GridViewCommandEventArgs类型的参数CommandName和CommandArgument属性GridView控件的数据操作GridView控件提供的数据记录的操作方法SelectRow(选择行),DeleteRow(删除行),SetEditRow(设定编辑的行),UpdateRow(更新指定索引位置的行),ExtractRowValues(提取行字段的值),SetPageIndex(使用行索引设置页索引),Sort(使用指定的排序表达式和排序方向进行排序)GridView控件也公开了触发事件的方法OnRowCommand,OnRowDeleting,OnPageIndexChanged等。GridView控件的界面设置属性Width(宽度)、Height(高度)、BackColor(背景色)、BackImageUrl(背景图片的URL)、HorizontalAlign(水平对齐方式)、GridLines(网格线的样式,GridLines枚举类型,包括不显示None、显示水平Horizontal、显示垂直Vertical和都显示Both四种样式)、BorderColor(边框颜色)、BorderWidth(边框宽度)、BorderStyle(边框类型)、CellPadding(单元格内容和边框之间的距离)、CellSpacing(单元格之间的距离)Font属性(FontInfo类型的对象)Name(名称)、Size(大小)、Bold(是否粗体)、Italic(是否斜体)、Overline(是否添加上划线)、UnderLine(是否添加下划线)、Strikeout(是否添加删除线)ShowHeader、ShowFooter,ShowHeaderWhenEmpty,EmptyDataText,EmptyDataTemplateCaption属性,CaptionAlign属性TableItemStyle类RowStyle和AlternatingRowStyle,SelectedRowStyle,EditRowStyle,HeaderStyle、FooterStyle和PagerStyleDetailsView数据绑定控件与GridView控件相似,但它允许添加数据对数据的显示方式不同GridView控件以表格行的形式在一个页面上重复显示多条记录,每个字段显示为一列DetailsView在一个页面上只显示一条记录,每个字段显示为一行DetailsView数据绑定控件标题标头行数据行命令行脚注行页导航行DetailsView数据绑定控件DetailsView控件的构成也使用各种类型的DataControlField对象定义每个数据字段,在页面文件中用“Fields”来标识,在运行时使用Fields属性来引用DetailsViewRow对象(从TableRow派生)(Rows集合属性)DetailsViewRow行对象又包括若干TableCell容器对象(Cells集合属性,Controls集合属性或者FindControl方法)DetailsView数据绑定控件DetailsView控件的构成支持多种类型的行,包括数据行(DataRow),空数据行(EmptyDataRow),标头行(Header)、脚注行(Footer)和页导航行(Pager)RowType属性(DataControlRowType对象)提供了Rows、HeaderRow、FooterRow、TopPagerRow和BottomPagerRow等属性来引用行能够以多种状态存在,交替行(Alternate)、正常默认模式(Normal)、编辑模式(Edit)和插入模式(Insert)。RowState属性(返回DataControlRowState枚举对象)DetailsView数据绑定控件DetailsView控件的构成属性RowIndex继承了普通网页控件(WebControl)用于设置界面特征的属性Visible(是否可见)、Font(字体信息)、前景色(ForeColor)、背景色(BackColor)、高度(Height)、宽度(Width)、边框宽度(BorderWidth)、边框颜色(BorderColor)和边框样式(BorderStyle)继承了TableRow类用于设置显示格式的一些属性HorizontalAlign(水平对齐方式)和VerticalAlign(垂直对齐方式)DetailsView控件的数据操作数据的检索和显示DataSourceID属性根据Fields集合中各个DataControlField对象的属性,利用多个DetaisViewRow行对象来显示第一条记录的各个字段ItemCreated事件可以使用DataKey或SelectedValue获取DataKeyNames指定的键字段信息DetailsView控件的数据操作数据的分页AllowPaging属性PageIndex、PageCount等属性或SetPageIndex等方法(每个页一般只显示一条记录)PagerSettings属性自定义PagerTemplatePageIndexChanging和PageIndexChanged事件参数对象包含的属性和操作与GridView控件基本相同DetailsView控件的数据操作数据的编辑、删除和添加三种记录显示模式—只读模式(ReadOnly)、编辑模式(Edit)、插入模式(Insert)CurrentMode属性或ChangeMode方法(DetailsViewMode枚举类型),或使用按钮ModeChanging事件,DetailsViewModeEventArgs类型的参数Cancel,NewMode,CancellingEdit,DefaultModeModeChangedDetailsView控件的数据操作数据的编辑、删除和添加增加数据修改界面AutoGenerateEditButton、AutoGenerateDeleteButton和AutoGenerateInsertButton在Fields集合中显式定义CommandField对象,将ShowEditButton、ShowDeleteButton、ShowInsertButton等属性设置为true在DetailsView控件中自己添加CommandName属性为“Edit”、“Delete”、“New”、“Update”、“Insert”和“Cancel”的按钮(要自己处理界面的切换工作)DetailsView控件的数据操作数据的编辑、删除和添加ItemUpdating事件,传递一个DetailsViewUpdateEventArgs类参数对象Cancel,CommandArgument,Keys、OldValues和NewValues(包含所有字段)ItemUpdated事件,传递一个DetailsViewUpdatedEventArgs类型的参数Keys、OldValues和NewValues,AffectedRows、Exception和ExceptionHandled,KeepInEditModeDetailsView控件的数据操作数据的编辑、删除和添加ItemInserting事件,传递一个DetailsViewInsertEventArgs类型的参数Cancel和CommandArgument,Values字典ItemInserted事件,传递一个DetailsInsertedEventArgs类型的参数AffectedRows、Exception、ExceptionHandled、Values,KeepInInsertModeDetailsView控件的数据操作数据的编辑、删除和添加ItemDeleting事件,传递一个DetailsViewDeleteEventArgs类型的参数Cancel,RowIndex,Keys和ValuesItemDeleted事件,DetailsViewDeletedEventArgs类对象Keys和Values字典,AffectedRows、Exception、ExceptionHandledItemCommand事件,DetailsViewCommandEventArgs类型的参数直接调用的数据源操作方法DeleteItem(删除当前记录)、UpdateItem(更新当前记录)和InsertItem(将当前记录插入数据源中)支持调用OnItemCommand、OnItemUpdating、OnItedDeleted等直接触发相应事件的方法DetailsView控件的数据操作界面设置用于总体显示格式设置的属性Height、GridLines、CellSpacing、Font、Caption、CaptionAlign模板PagerTemplate、EmptyDataTemplate、HeaderTemplate、FooterTemplateHeaderText和FooterTextTableItemStyle类属性RowStyle(数据行样式)、AlternatingRowStyle(交替数据行的样式)、CommandRowStyle(包含命令按钮的行的样式)、EditRowStyle(处于编辑模式时数据行的样式)、InsertRowStyle(处于插入模式时数据行的样式)、EmptyDataRowStyle(空数据行的样式)、HeaderStyle(标头行的样式)、FooterStyle(脚注行的样式)、PagerStyle(页导航行的样式)。ListView数据绑定控件ListView数据绑定控件使用ItemTemplate模板为每条记录都创建一个ListViewItem对象若干ListViewItem对象在运行时依序放入一个LayoutTemplate模板(根布局)定义的容器内模板的定义中必须包含一个占位符控件,如tr、div或span等ID一般定义为“itemPlaceHolder”也可以使用ListView控件的ItemPlaceHolderID来指定其它名称ListView数据绑定控件可以对ListViewItem对象集合进行分组在LayoutTemplate模板中定义一个包含分组模板的容器控件,定义其ID为“GroupPlaceHolder”(GroupPlaceHolderID属性)定义一个GroupTemplate模板,在该模板中定义中包含一个ListViewItem对象使用的容器控件在运行时,ListView控件首先根据ItemTemplate模板的定义填充GroupTemplate定义的容器对象,填充的对象个数使用ListView控件的GroupItemCount属性指定,该容器创建完毕后,再将其填充到LayoutTemplate模板定义的容器对象,然后开始下一个GroupTemplate模板定义的容器对象的填充过程,依次填充,直到完成整个页面GroupSeparatorTemplate和ItemSeparatorTemplate指示ListView控件在分组之间和数据项之间呈现相应的内容。ListViewItem类Controls属性集合或者FindControl方法ListView数据绑定控件根据数据记录创建的ListViewItem对象将被添加到ListView控件的Items属性集合中实际上添加的是ListViewDataItem对象,它从ListViewItem对象派生,重写了DataItem、DataItemIndex、DisplayIndex三个属性ListViewItem对象的其他类型插入项(InsertItem)和空项(EmptyItem)ItemType属性(ListViewItemType枚举类型)InsertItem属性,EditItem属性ListView控件的数据操作数据的检索和显示ItemCreated事件,传递一个ListViewItemEventArgs类型参数Item属性获取创建的ListViewItem对象的引用对其进行一些修改或者添加一些自定义的内容ItemDataBound事件,它也会传递当前ListViewItem对象的引用,通常用于修改绑定数据的内容LayoutCreated事件,可以在此事件处理代码中对根布局进行更改。ListView控件的数据操作数据的检索和显示记录选择公开了SelectItem方法在ItemTemplate和AlternatingItemTemplate模板中添加一个按钮,将其CommandName设置为“Select”SelectedIndexChanging事件,传递一个ListViewSelectEventArgs类型的参数Cancel,NewSelectedIndexSelectedIndexChanged事件SelectedDataKey(预先设置DataKeyNames属性)、SelectedIndex、SelectedValueListView控件的数据操作数据的排序公开了Sort方法定义一个CommandName为“Sort”的按钮,将其CommandArgument设置为排序表达式Sorting事件,传递一个ListViewSortEventArgs类型的参数Cancel,SortExpression和SortDirectionSorted事件ListView控件的SortExpression和SortDirection属性ListView控件的数据操作数据的分页-原理实现一个接口IPageableItemContainer,由一个DataPager类控件来协助实现分页界面DataPager控件可以放置在ListView控件的LayoutTemplate模板之中,也可以放于ListView控件之外,但放于外部时需将其PagedControlID设置为它所控制的ListView控件的IDDataPager对象的PageSize属性,EnablePersistedSelection属性ListView控件的数据操作数据的分页-原理IpageableItemContainer接口包含两个页面信息属性StrartRowIndex(数据页上显示的第一条记录的索引)MaximumRows(单个数据页上显示的最大项数)实现一个方法SetPageProperties(使用两个相应的参数设置页面信息属性)一个事件TotalRowCountAvailable(由DataPager控件使用,实现获取数据源记录总数信息等操作)DataPager控件也包含StartRowIndex和MaximumRows两个属性以及SetPageProperties方法调用SetPageProperties方法时,它会用参数值设置前两个属性并调用ListView控件的SetProperties方法来更新ListView的页面信息相关属性(如StartRowIndex和MaximumRows)。ListView控件的数据操作数据的分页-原理DataPager控件还包括一个TotalRowCount属性通过处理ListView控件的TotalRowCountAvailable事件获取OnTotalRowCountAvailable方法PageEventArgs类型的参数StartRowIndex、MaximumRows和TotalRowCount方法ConnectToEvents将OnTotalRowCountAvailable方法指定为ListView控件的TotalRowCountAvailable事件的处理函数当ListView控件可以获取基础数据源中的总记录数时,它会引发TotalRowCountAvailable事件ListView控件的数据操作数据的分页DataPager控件支持三种类型的导航界面页码型(NumericPagerField)、上下页型(NextPreviousPagerField)和自定义型(TemplatePagerField)使用类似的DataPagerField对象集合(Fields集合属性),可以同时包含三类导航页面DataPagerField类DataPager,QueryStringValue和QueryStringHandled三个派生类—NumericPagerField、NextPreviousPagerField和TemplatePagerField重写CreateDataPagers(创建用户界面并添加到指定容器)、CreateField(创建从DataPagerField派生的空对象)和HandleEvent(处理在页导航字段对象中发生的事件)ListView控件的数据操作数据的分页NumericPagerField字段显示页码(按钮形式)还能够显示上一页、下一页按钮ButtonCount属性按钮的类型有三种—普通按钮(Button)、图像按钮(Image)、超链接按钮(Link),ButtonType属性(ButtonType枚举类型)上一页和下一页按钮上可以显示文本(通过PreviousPageText和NextPageText属性设置),也可以显示图像(通过PreviousPageImagUrl和NextPageImageUrl属性设置),格式设置,NumericButtonCssClass,CurrrentPageLabelCssClass,NextPreviousButtonCssClassListView控件的数据操作数据的分页NextPreviousPagerField字段显示下一页、上一页、第一页、最后页等按钮用于导航按钮的类型(ButtonType属性):Button、Im
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025建筑工程施工进度调整合同
- 2025宁夏绿色蔬菜购销合同
- 2025私人住宅设计施工合同
- 企业社会责任实践与策略手册
- 项目启动会议纪要与下一步行动计划
- 2025合同调整协议
- 2025承包商招标合同范本
- 物流机器人行业技术发展趋势研究
- 交通规划与设计方案报告
- 中俄经贸合作专题知到课后答案智慧树章节测试答案2025年春哈尔滨商业大学
- 北京市海淀区2023-2024学年七年级下学期期末道德与法治试题(原卷版)
- 设备使用维护保养基础知识培训
- 《遥感导论》全套课件
- GB∕T 10544-2022 橡胶软管及软管组合件 油基或水基流体适用的钢丝缠绕增强外覆橡胶液压型 规范
- 超星尔雅学习通《大学生职业发展与就业指导(仁能达教育科技公司)》2020章节测试含答案(下)
- 作物田间试验记载表
- 连续就读证明模版
- 居家养老陪同就医服务要求
- 10t龙门吊基础承载力计算书
- 北京三晶传感器说明书1101
- 分析美白祛斑成分的发展史
评论
0/150
提交评论