ASPNET數(shù)據(jù)訪問技術(shù)課件_第1頁
ASPNET數(shù)據(jù)訪問技術(shù)課件_第2頁
ASPNET數(shù)據(jù)訪問技術(shù)課件_第3頁
ASPNET數(shù)據(jù)訪問技術(shù)課件_第4頁
ASPNET數(shù)據(jù)訪問技術(shù)課件_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ASP.NET數(shù)據(jù)訪問技術(shù)2023年7月17日層次結(jié)構(gòu)就ASP.NET的數(shù)據(jù)訪問技術(shù)來說,其數(shù)據(jù)操作思路基本上可以分為三層,即數(shù)據(jù)提供層-》數(shù)據(jù)源控件層-》數(shù)據(jù)綁定控件層。其最底層為數(shù)據(jù)提供層,即數(shù)據(jù)源,數(shù)據(jù)源可以是關(guān)系數(shù)據(jù)庫,也可以是類和對(duì)象結(jié)構(gòu)中間層為各類數(shù)據(jù)源控件,主要包括SqlDatasource、ObjectDatasource、LinqDatasource等最上層即用戶界面層,ASP.NET通過數(shù)據(jù)綁定控件訪問數(shù)據(jù)源控件提供的數(shù)據(jù)操作,實(shí)現(xiàn)數(shù)據(jù)不同形式的顯示和編輯,常用的數(shù)據(jù)綁定控件包括GridView、DetailsView、FormView、ListView等層次結(jié)構(gòu)數(shù)據(jù)源控件都在一定程度上對(duì)數(shù)據(jù)操作進(jìn)行了封裝數(shù)據(jù)綁定控件需要調(diào)用數(shù)據(jù)源控件功能時(shí),僅需將DataSourceID屬性設(shè)置為數(shù)據(jù)源控件的ID,提供相應(yīng)的參數(shù)即可SqlDataSource數(shù)據(jù)源控件SqlDataSource控件使用ADO.NET類與ADO.NET支持的數(shù)據(jù)庫進(jìn)行交互,它可以訪問多種類型的數(shù)據(jù)庫MicrosoftSQLServer數(shù)據(jù)庫(使用System.Data.SqlClient提供程序),Oracle數(shù)據(jù)庫(使用System.Data.OracleClient提供程序)、ODBC數(shù)據(jù)源(使用System.Data.Odbc提供程序),OleDb數(shù)據(jù)源(使用System.Data.OleDb提供程序)設(shè)置其ProviderName(默認(rèn)為“System.Data.SqlClient)SqlDataSource數(shù)據(jù)源控件SqlDataSource控件使用ADO.NET類與ADO.NET支持的數(shù)據(jù)庫進(jìn)行交互,它可以訪問多種類型的數(shù)據(jù)庫MicrosoftSQLServer數(shù)據(jù)庫(使用System.Data.SqlClient提供程序),Oracle數(shù)據(jù)庫(使用System.Data.OracleClient提供程序)、ODBC數(shù)據(jù)源(使用System.Data.Odbc提供程序),OleDb數(shù)據(jù)源(使用System.Data.OleDb提供程序)設(shè)置其ProviderName(默認(rèn)為“System.Data.SqlClient)SqlDataSource數(shù)據(jù)源控件SqlDataSource使用ADO.NET技術(shù)來訪問數(shù)據(jù)源,開發(fā)人員只需設(shè)置連接字符串?dāng)?shù)據(jù)檢索<asp:SqlDataSource

ID="SqlDataSource1"

runat="server"

DataSourceMode="DataReader"ConnectionString="<%$

ConnectionStrings:MyNorthwind%>"

SelectCommand="SELECTLastNameFROMEmployees"></asp:SqlDataSource>SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)檢索CREATEPROCEDUREsp_GetAllEmployeesASSELECTLastNameFROMEmployees;GO此時(shí)將SelectCommand屬性設(shè)置為“sp_GteAllEmployees”,可以檢索同樣的數(shù)據(jù),但是需要同時(shí)將SelectCommandType屬性(SqlDataSourceCommandType枚舉類型)設(shè)置為StoredProcedure,默認(rèn)情況下,它被設(shè)置為TextSqlDataSource數(shù)據(jù)源控件數(shù)據(jù)檢索SqlDataSource控件可以返回兩種類型的數(shù)據(jù)集,DataReader和DataSetDataReader數(shù)據(jù)集對(duì)象一般用于簡(jiǎn)單的讀取數(shù)據(jù)操作,它效率較高,但不支持緩存等其他復(fù)雜操作。DataSet對(duì)象可以為數(shù)據(jù)集建立一個(gè)完整的內(nèi)存映像,從而支持排序、篩選、分頁等復(fù)雜操作SqlDataSource控件使用DataSourceMode屬性SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)檢索<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數(shù)據(jù)源控件數(shù)據(jù)檢索SQL命令語句的參數(shù)可以有多種來源,如Parameter對(duì)象、Web服務(wù)器控件、Cookie、會(huì)話狀態(tài)(Session)、網(wǎng)頁窗體字段(FormField)、網(wǎng)頁查詢字符串(QueryString)等。SqlDataSource數(shù)據(jù)源控件SQL命令語句的參數(shù)Parameter類Name(參數(shù)名稱)、Type(參數(shù)類型)、Direction(參數(shù)方向,ParameterDirection類型)和DefaultValue(默認(rèn)值)Size屬性DbType屬性ConvertEmptyStringToNullSqlDataSource數(shù)據(jù)源控件SQL命令語句的參數(shù)ControlParameter類指示從運(yùn)行時(shí)的控件獲取參數(shù)的值,可以使用它的ControlID屬性設(shè)置要獲取屬性值的控件ID使用PropertyName指定獲取參數(shù)值的屬性名稱控件的ControlValuePropertyAttribute屬性日歷控件(Calendar)的SelectedDate、GridView控件的SelectedValueSqlDataSource數(shù)據(jù)源控件SQL命令語句的參數(shù)SessionParameter類的對(duì)象指示從當(dāng)前的會(huì)話狀態(tài)(Session)中獲取變量的值作為參數(shù)值,變量名稱由SessionField屬性指定。CookieParameter指定從頁面請(qǐng)求的HTTPCookie中獲取參數(shù)的值,CookieName屬性設(shè)定標(biāo)識(shí)使用的HttpCookie對(duì)象的名稱。QueryStringParameter定義的參數(shù)從頁面HTTP請(qǐng)求的查詢字符串字段中獲取參數(shù)的值,其QueryStringField屬性用于設(shè)定查詢字符串中的字段名稱。Pro定義的參數(shù)從配置文件中獲取參數(shù)值,其PropertyName指定了配置文件中對(duì)應(yīng)的屬性的名稱。FormParameter定義的屬性會(huì)嘗試從HTTP請(qǐng)求的窗體對(duì)象的字段中獲取參數(shù)值,可以使用FormField屬性指定窗體字段的名稱。SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)檢索在SqlDataSource控件運(yùn)行時(shí),會(huì)將所有的參數(shù)包含在一個(gè)SelectParameters集合屬性(ParameterCollection類型)中以供檢索和修改。SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)操作原理SqlDataSource僅是作為一個(gè)公開的數(shù)據(jù)操作接口,它的數(shù)據(jù)操作事實(shí)上都委托給一個(gè)SqlDataSourceView類的對(duì)象執(zhí)行數(shù)據(jù)源控件一般從DataSourceControl派生,要求實(shí)現(xiàn)一個(gè)IDataSource接口,最主要的是實(shí)現(xiàn)GetViewNames和GetView兩個(gè)方法SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)操作原理DataSourceView一些判斷數(shù)據(jù)源支持的操作類型的屬性CanUpdate(能否更新)、CanInsert(能否插入)、CanDelete(能否刪除)、CanPage(能否分頁)、CanSort(能否排序)、CanRetrieveTotalRowCount(能偶檢索源數(shù)據(jù)中的記錄總數(shù))實(shí)現(xiàn)數(shù)據(jù)操作的各種方法ExecuteSelect(檢索數(shù)據(jù))、ExecuteUpdate(更新數(shù)據(jù))、ExecuteInsert(插入數(shù)據(jù))、ExecuteCommand(執(zhí)行命令)(這些方法會(huì)返回操作影響的記錄行數(shù))這些操作也可以采用異步模式完成,但是要改為調(diào)用Select、Update、Insert、Delete等方法(注意它們不會(huì)返回任何值)SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)操作原理SqlDataSource控件使用的視圖類為SqlDataSourceView它重寫了CanUpdate、CanInsert、CanDelete、CanPage、CanSort、CanRetieveTotalRowCount等屬性和ExecuteSelect、ExecuteUpdate、ExecuteInsert和ExecuteDelete等方法SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)操作原理SqlDataSource控件使用的視圖類為SqlDataSourceView增加了SelectCommand、SelectCommandType和SelectParameters等用于提供數(shù)據(jù)檢索信息的屬性,UpdateCommand、UpdateCommandType和UpdateParameters等設(shè)置記錄更新信息的屬性,InsertCommand、InsertCommandType和InsertParameters等設(shè)置記錄插入信息的屬性,DeleteCommand、DeleteCommandType和DeleteParameters等設(shè)置記錄刪除信息的屬性,F(xiàn)ilterExpression和FilterParameters等用于設(shè)置記錄篩選信息的屬性,SortParameterName(僅用于檢索命令為存儲(chǔ)過程時(shí))等用于設(shè)置數(shù)據(jù)排序信息的屬性。繼承了DataSourceView類的Select、Update、Insert、Delete等異步操作方法SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)檢索在執(zhí)行數(shù)據(jù)檢索之前,會(huì)首先引發(fā)一個(gè)Selecting事件,傳送一個(gè)SqlDataSourceSelectingEventArgs類型的參數(shù)(從SqlDataSourceCommandEventArgs類派生)Cancel屬性參數(shù)的Commmand屬性可以返回?cái)?shù)據(jù)操作所使用的DbCommand對(duì)象Arguments屬性可以返回傳遞給Select方法的DataSourceSelectArguments對(duì)象。SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)檢索SqlDataSource控件的Select方法可以返回兩種類型的數(shù)據(jù)(使用IEnumerable類型返回),當(dāng)DataSourceMode屬性設(shè)置為“DataSet”時(shí),它將返回一個(gè)DataView對(duì)象,當(dāng)設(shè)置為“DataReader”時(shí),它會(huì)返回一個(gè)IDataReader對(duì)象。SqlDataSource數(shù)據(jù)源控件數(shù)據(jù)檢索完成數(shù)據(jù)檢索后,SqlDataSource(或者SqlDataSourceView)控件會(huì)引發(fā)Selected事件,向事件處理程序傳送一個(gè)SqlDataSourceStatusEventArgs類型的參數(shù)AffectedRowsCommandException(實(shí)際上它將真正的異常放在其InnerException屬性中)ExceptionHandledCancelSelectOnNullParameterSqlDataSource數(shù)據(jù)源控件記錄的更新、插入和刪除操作SqlDataSource控件將相應(yīng)的屬性信息傳遞給關(guān)聯(lián)的SqlDataSourceView控件,然后使用SqlDataSourceView控件的相應(yīng)方法Update、Insert、Delete等完成更新、插入、刪除等操作。如在數(shù)據(jù)綁定控件調(diào)用SqlDataSourceView對(duì)象的數(shù)據(jù)操作功能時(shí)候,會(huì)將Keys、Values、OldValues、NewValues等包含字段信息的字典傳送給SqlDataSourceView對(duì)象的ExecuteUpdate、ExecuteInsert、ExecuteDelete方法,這些方法會(huì)根據(jù)傳遞的參數(shù)以及SqlDataSource的UpdateCommand、InsertCommandType、DeleteParameters等屬性信息建立相應(yīng)的DbCommand命令,使用數(shù)據(jù)連接完成相應(yīng)的數(shù)據(jù)操作,返回?cái)?shù)據(jù)操作的輸出參數(shù),并捕獲數(shù)據(jù)操作中可能發(fā)生的異常。SqlDataSource數(shù)據(jù)源控件記錄的更新、插入和刪除操作在數(shù)據(jù)更新或刪除操作時(shí),出于操作的需要,數(shù)據(jù)綁定控件可能會(huì)同時(shí)傳遞字段的原始值和修改后的值,此時(shí)為了區(qū)分兩者,可以設(shè)置OldValuesParameterFormatString屬性,如將其設(shè)置為“old_{0}”時(shí),名稱前綴為old的參數(shù)將被字段的原始值而不是當(dāng)前值取代,如下例:UPDATETable1SETLastModifiedDate=@LastModifiedDate

WHEREKey=@KeyANDLastModifiedDate=@old_LastModifiedDateSqlDataSource數(shù)據(jù)源控件記錄的更新、插入和刪除操作在數(shù)據(jù)更新、插入和刪除操作之前,SqlDataSourceView對(duì)象會(huì)分別引發(fā)Updating、Inserting和Deleting事件,向事件處理程序傳遞一個(gè)SqlDataSourceCommandEventArgs類型的參數(shù)Cancel屬性Command屬性SqlDataSource數(shù)據(jù)源控件記錄的更新、插入和刪除操作在更新、插入和刪除操作完成后,SqlDataSourceView對(duì)象會(huì)分別引發(fā)Updated、Inserted、Deleted事件,傳遞的參數(shù)類型與Selected事件中相同實(shí)際上,SqlDataSourceView使用OnDeleted、OnDataSourceViewChanged方法引發(fā)相應(yīng)的事件,這些方法也可以直接調(diào)用。SqlDataSource數(shù)據(jù)源控件排序、篩選和分頁可以考慮為SelectCommand屬性中的Select語句添加OrderBy字句當(dāng)SelectCommandType為StoredProcedure時(shí),可以使用SortParameterName屬性指定一個(gè)參數(shù)Select方法通過DataSourceSelectArguments類參數(shù)對(duì)象的SortExpression屬性為Select方法傳遞一個(gè)排序表達(dá)式SqlDataSource數(shù)據(jù)源控件排序、篩選和分頁SqlDataSourceView對(duì)象也可以使用DataView.RowFilter屬性實(shí)現(xiàn)數(shù)據(jù)的篩選,只要設(shè)置了控件的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數(shù)據(jù)源控件排序、篩選和分頁在進(jìn)行數(shù)據(jù)篩選之前,SqlDataSourceView還會(huì)引發(fā)一個(gè)Filtering事件,傳遞一個(gè)SqlDataSourceFilteringEventArgs類型的參數(shù)Cancel屬性ParameterValues(IorderedDictionary類型)包含了FilterParametes中定義的各個(gè)參數(shù)SqlDataSourceView尚不支持分頁GridView數(shù)據(jù)綁定控件GridView控件使用表格的形式來顯示和修改記錄數(shù)據(jù),如下圖所示(圖7.3),它可以實(shí)現(xiàn)記錄的顯示、編輯和刪除操作,但是不能添加記錄,它同時(shí)還支持記錄顯示的排序和分頁操作。GridView數(shù)據(jù)綁定控件標(biāo)題列標(biāo)頭行列腳注行頁導(dǎo)航行數(shù)據(jù)行GridView控件的構(gòu)成GridView控件的行對(duì)象GridView控件實(shí)際上由若干個(gè)GridViewRow行對(duì)象構(gòu)成數(shù)據(jù)行(DataRow)、標(biāo)頭行(Header)、腳注行(Footer)、EmptyDataRow(空數(shù)據(jù)行)、頁導(dǎo)航行(Pager)和分隔符行(Separator)RowType屬性(DataControlRowType類型的枚舉值)可以通過GridView控件的Rows(數(shù)據(jù)行集合)、HeaderRow(標(biāo)頭行)、FooterRow(腳注行)、TopPagerRow(頂部頁導(dǎo)航行)、BottomPagerRow(底部頁導(dǎo)航行)等屬性來獲得這些行或行集合的引用GridView控件的構(gòu)成GridView控件的行對(duì)象RowState屬性返回行的當(dāng)前狀態(tài)(DataControlRowState類型的枚舉)正常默認(rèn)狀態(tài)(Normal)、交替行狀態(tài)(Alternate)、選中狀態(tài)(Selected)和編輯狀態(tài)(Edit)GridView控件的構(gòu)成單元格每個(gè)GridViewRow對(duì)象又由若干單元格(TableCell)對(duì)象構(gòu)成(通過Cells集合屬性引用)RowSpan和ColumnSpanText屬性格式設(shè)置(HorizontalAlign屬性和VerticalAlign屬性,Wrap屬性)Controls集合或者FindControl方法來獲取特定控件的引用GridView控件的構(gòu)成GridView控件的列對(duì)象創(chuàng)建行對(duì)象時(shí)候,實(shí)際上是根據(jù)Columns屬性中包含的DataControlField對(duì)象集合來確定每個(gè)字段的顯示和綁定方式ShowHeader(是否顯示標(biāo)頭)、HeadText(標(biāo)頭文本)、HeadImageUrl(標(biāo)頭中顯示圖像的URL,優(yōu)先于HeaderText屬性)、HeaderStyle(標(biāo)頭樣式)、FooterText(腳注文本)、FooterStyle(腳注樣式)、ItemStyle(顯示文本的樣式)InsertVisibleTableItemStyle(從基礎(chǔ)的Style類派生)類型的對(duì)象GridView控件的構(gòu)成類別屬性用途說明顯示和樣式判斷Visible是否顯示

IsEmpty是否已定義樣式元素

Wrap是否換行顯示

大小和對(duì)齊方式Hight高度

Width寬度

HorizontalAlign水平對(duì)齊方式HorizontalAlign枚舉類型VerticalAlign垂直對(duì)齊方式VerticalAlign枚舉類型顯示顏色ForeColor前景色System.Drawing.Color類型BackColor背景色System.Drawing.Color類型邊框設(shè)置BorderColor邊框顏色System.Drawing.Color類型BorderWidth邊框?qū)挾?/p>

BorderStyle邊框樣式BorderStyle枚舉類型字體設(shè)置Font字體對(duì)象FontInfo類型GridView控件的構(gòu)成DataControlField的幾個(gè)派生類BoundField對(duì)象使用文本形式來顯示和綁定的字段,僅需將其DataField屬性設(shè)置為需要綁定的字段名稱即可NullDisplayTextConvertEmptyStringToNullReadOnlyDataFormatString{0:C3}258.4321顯示為貨幣格式$258.432如果希望在編輯模式下也應(yīng)用格式化設(shè)置,需要將ApplayFormatInEditMode屬性設(shè)置為trueGridView控件的構(gòu)成DataControlField的幾個(gè)派生類CheckBoxField對(duì)象顯示一個(gè)復(fù)選框,主要用于綁定布爾型的字段,它其實(shí)派生自BoundField綁定的字段必須是布爾型的,或者可以由Bool.Parse方法解析為布爾型TextGridView控件的構(gòu)成DataControlField的幾個(gè)派生類ButtonField對(duì)象GridView和DetailsView等控件會(huì)自動(dòng)監(jiān)視按鈕的點(diǎn)擊事件,根據(jù)被點(diǎn)擊按鈕的CommandName屬性執(zhí)行不同的操作Edit(編輯)、Cancel(取消)、Delete(刪除)、New(添加)、Update(更新)、Select(選擇)、Insert(插入)、Sort(排序)和Page(分頁)ButtonField類的列字段將會(huì)在每行該字段的位置顯示一個(gè)按鈕,單擊按鈕會(huì)引發(fā)RowCommand事件(GridView控件)或ItemCommand事件(DetailsView控件)按鈕可以有三種類型—普通按鈕(Button),圖像(Image),鏈接(Link)ButtonType屬性DataTextField,ImageUrl,DataTextFormatStringGridView控件的構(gòu)成DataControlField的幾個(gè)派生類ImageField對(duì)象顯示一個(gè)圖像,顯示圖像的URL使用DataImageUrlField和DataImageUrlFormatString兩個(gè)屬性來指定 <asp:ImageField

DataImageUrlField="FirstName,LastName“ DataImageUrlFormatString="~\Images\{0}+{1}.jpg"/〉A(chǔ)lternateText,DataAlternateTextField和DataAlternateTextFormatStringNullImageUrl,NullDisplayTextConvertEmptyStringToNull,ReadOnlyGridView控件的構(gòu)成DataControlField的幾個(gè)派生類HyperLinkField對(duì)象顯示一個(gè)超鏈接,通常用于導(dǎo)航到其他相關(guān)網(wǎng)頁靜態(tài)模式NavigateUrl動(dòng)態(tài)導(dǎo)航,可以使用DataNavigateUrlFields和DataNavigateUrlFormatString屬性<asp:HyperlinkField

DataNavigateUrlFields="ProductID"

DataNavigateUrlFormatString="~\details.aspx?ProductID={0}"

Target="_blank"

/>GridView控件的構(gòu)成DataControlField的幾個(gè)派生類HyperLinkField對(duì)象顯示一個(gè)超鏈接,通常用于導(dǎo)航到其他相關(guān)網(wǎng)頁靜態(tài)模式NavigateUrl動(dòng)態(tài)導(dǎo)航,可以使用DataNavigateUrlFields和DataNavigateUrlFormatString屬性<asp:HyperlinkField

DataNavigateUrlFields="ProductID"

DataNavigateUrlFormatString="~\details.aspx?ProductID={0}"

Target="_blank"

/>

<asp:

HyperlinkField

DataTextField="UnitPrice“

DataTextFormatString="{0:C}"

/>GridView控件的構(gòu)成DataControlField的幾個(gè)派生類CommandField對(duì)象能夠自動(dòng)顯示選擇、編輯、新建、刪除等按鈕,只需要設(shè)置相應(yīng)的屬性—ShowSelectButton,ShowEditButton,ShowInsertButton(僅用于DetailsView控件),ShowDeleteButton。ButtonType可以顯示文本標(biāo)題,也可以顯示圖像SelectText、EditText、NewText、DeleteText、UpdateText、CancelText、InsertTextSelectImageUrl、EditImageUrl等GridView控件的構(gòu)成DataControlField的幾個(gè)派生類TemplateField對(duì)象<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控件的構(gòu)成DataControlField的幾個(gè)派生類TemplateField對(duì)象<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控件的構(gòu)成DataControlField的幾個(gè)派生類TemplateField對(duì)象<asp:TemplateField

HeaderText="LastName">

<ItemTemplate>

<%#Eval("au_lname")%>

</ItemTemplate>

<EditItemTemplate>

<asp:TextBox

ID="LastNameTextBox"

Text='<%#Bind("au_lname")%>'

runat="server"

/>

</EditItemTemplate></asp:TemplateField>GridView控件的構(gòu)成DataControlField的幾個(gè)派生類TemplateField對(duì)象EditTemplate用于定義該字段在行的編輯狀態(tài)下顯示的內(nèi)容,InsertTemplate用于定義該字段在插入模式下的顯示內(nèi)容,HeaderTemplate用于定義標(biāo)題行的顯示內(nèi)容,F(xiàn)ooterTemplate用于定義腳注行的顯示內(nèi)容。ConvertEmptyStringToNull屬性GridView控件的數(shù)據(jù)操作數(shù)據(jù)的檢索和顯示DataSourceID屬性源數(shù)據(jù)一般為DataSet、DataTable等規(guī)范類型--DataView對(duì)象其他集合類型的源數(shù)據(jù)(如實(shí)現(xiàn)了IEnumerable接口的集合)GridView控件將使用反射技術(shù)獲取源數(shù)據(jù)的字段名稱、類型等信息,然后根據(jù)Columns屬性中各個(gè)DataControlField列的設(shè)置來生成每個(gè)GridViewRow行。GridView控件的數(shù)據(jù)操作數(shù)據(jù)的檢索和顯示每完成一個(gè)GridViewRow數(shù)據(jù)行的創(chuàng)建工作后,GridView控件會(huì)引發(fā)RowCreated事件修改行的外觀如ForeColor、BackColor、BorderStyle等屬性使用的參數(shù)類為GridViewRowEventArgs,它的Row屬性返回了當(dāng)前創(chuàng)建的GridViewRow類型的行對(duì)象行創(chuàng)建完成后,GridView控件會(huì)將各個(gè)內(nèi)含控件綁定到相應(yīng)的字段,然后引發(fā)RowDataBound事件修改行中控件綁定的數(shù)據(jù)內(nèi)容與RowCreated事件使用的參數(shù)類相同GridView控件的數(shù)據(jù)操作數(shù)據(jù)的檢索和顯示實(shí)現(xiàn)選擇操作可以在GridView的Columns集合中創(chuàng)建一個(gè)ButtonField字段,將其CommandName屬性設(shè)置為“Select”,也可以添加一個(gè)CommandField字段,將其ShowSelectButton屬性設(shè)置為TrueSelectIndexChanging事件,GridViewSelectEventArgs類型的參數(shù)Cancel屬性NewSelectedIndex屬性SelectedIndexChanged事件SelectedRow,SelectedIndex,SelectedDataKey,SelectedValueGridView控件的數(shù)據(jù)操作數(shù)據(jù)的排序?qū)llowSorting屬性設(shè)置為true在列標(biāo)題中會(huì)顯示LinkButton控件,同時(shí)將每一個(gè)列字段DataControlField的SortExpression設(shè)置為該列綁定的數(shù)據(jù)字段的名稱。Sorting事件,傳遞一個(gè)GridViewSortEventArgs類型的參數(shù)Cancel屬性SortExpression,SortDirectionSorted事件GridView控件的SortExpression和SortDirection屬性GridView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁P(yáng)ageIndex屬性或SetPageIndex方法,PageCount屬性支持兩種類型的分頁設(shè)置設(shè)置PagerSettings屬性Mode屬性,PageButtonCount,NextPageText、PreviousPageText、FirstPageText、LastPageText,NextPageImageUrl、PreviousPageImageUrl、FirstPageImageUrl和LastPageImageUrl,Position,TopPagerRow,BottomPagerRowGridView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁支持兩種類型的分頁設(shè)置PagerTemplate模板包含一些按鈕,將這些按鈕的CommandName屬性設(shè)置為“Page”CommandArgument屬性:First(導(dǎo)航到第一頁)、Last(導(dǎo)航到最后一頁)、Prev(導(dǎo)航到上一頁)、Next(導(dǎo)航到下一頁)、數(shù)字(導(dǎo)航到數(shù)字指定的頁)PageIndexChanging事件,GridViewPageEventArgs類型的參數(shù)Cancel屬性NewPageIndexPageIndexChanged事件PageIndexGridView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯和刪除EditIndex屬性設(shè)置為非-1CommandName為“Edit”按鈕添加了一個(gè)CommandField字段并將其ShowEditButton屬性設(shè)置為trueGridView控件的數(shù)據(jù)操作GridView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯和刪除不同的列字段對(duì)象會(huì)使用不同的方式顯示編輯界面BoundField會(huì)根據(jù)綁定字段的數(shù)據(jù)類型顯示適當(dāng)?shù)木庉嬁丶emplateField將根據(jù)EditItemTemplate模板顯示定義的編輯控件RowEditing事件,GridViewEditEventArgs類型的參數(shù)Cancel屬性,NewEditIndex屬性RowUpdating事件,GridViewUpdateEventArgs類型的參數(shù)Cancel屬性三個(gè)IorederedDictionary類型的字典集合Keys,OldValues和NewValuesRowUpdated事件,GridViewUpdatedEventArgs類型的參數(shù)Exception屬性,ExceptionHandled屬性,AffectedRows屬性,KeepInEditMode三個(gè)字典Keys,OldValues和NewValuesRowCancelingEdit事件,GridViewCancelEditEventArgs類型的參數(shù)Cancel屬性,RowIndex屬性GridView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯和刪除RowDeleting事件,GridViewDeleteEventArgs類型的參數(shù)Cancel屬性,RowIndex屬性Keys,OldValuesRowDeleted事件,GridViewDeletedEventArgs類型的參數(shù)AffectedRows,Exception和ExceptionHandledKeys和OldKeys字典RowCommand事件,GridViewCommandEventArgs類型的參數(shù)CommandName和CommandArgument屬性GridView控件的數(shù)據(jù)操作GridView控件提供的數(shù)據(jù)記錄的操作方法SelectRow(選擇行),DeleteRow(刪除行),SetEditRow(設(shè)定編輯的行),UpdateRow(更新指定索引位置的行),ExtractRowValues(提取行字段的值),SetPageIndex(使用行索引設(shè)置頁索引),Sort(使用指定的排序表達(dá)式和排序方向進(jìn)行排序)GridView控件也公開了觸發(fā)事件的方法OnRowCommand,OnRowDeleting,OnPageIndexChanged等。GridView控件的界面設(shè)置屬性Width(寬度)、Height(高度)、BackColor(背景色)、BackImageUrl(背景圖片的URL)、HorizontalAlign(水平對(duì)齊方式)、GridLines(網(wǎng)格線的樣式,GridLines枚舉類型,包括不顯示None、顯示水平Horizontal、顯示垂直Vertical和都顯示Both四種樣式)、BorderColor(邊框顏色)、BorderWidth(邊框?qū)挾龋?、BorderStyle(邊框類型)、CellPadding(單元格內(nèi)容和邊框之間的距離)、CellSpacing(單元格之間的距離)Font屬性(FontInfo類型的對(duì)象)Name(名稱)、Size(大?。old(是否粗體)、Italic(是否斜體)、Overline(是否添加上劃線)、UnderLine(是否添加下劃線)、Strikeout(是否添加刪除線)ShowHeader、ShowFooter,ShowHeaderWhenEmpty,EmptyDataText,EmptyDataTemplateCaption屬性,CaptionAlign屬性TableItemStyle類RowStyle和AlternatingRowStyle,SelectedRowStyle,EditRowStyle,HeaderStyle、FooterStyle和PagerStyleDetailsView數(shù)據(jù)綁定控件與GridView控件相似,但它允許添加數(shù)據(jù)對(duì)數(shù)據(jù)的顯示方式不同GridView控件以表格行的形式在一個(gè)頁面上重復(fù)顯示多條記錄,每個(gè)字段顯示為一列DetailsView在一個(gè)頁面上只顯示一條記錄,每個(gè)字段顯示為一行DetailsView數(shù)據(jù)綁定控件標(biāo)題標(biāo)頭行數(shù)據(jù)行命令行腳注行頁導(dǎo)航行DetailsView數(shù)據(jù)綁定控件DetailsView控件的構(gòu)成也使用各種類型的DataControlField對(duì)象定義每個(gè)數(shù)據(jù)字段,在頁面文件中用“Fields”來標(biāo)識(shí),在運(yùn)行時(shí)使用Fields屬性來引用DetailsViewRow對(duì)象(從TableRow派生)(Rows集合屬性)DetailsViewRow行對(duì)象又包括若干TableCell容器對(duì)象(Cells集合屬性,Controls集合屬性或者FindControl方法)DetailsView數(shù)據(jù)綁定控件DetailsView控件的構(gòu)成支持多種類型的行,包括數(shù)據(jù)行(DataRow),空數(shù)據(jù)行(EmptyDataRow),標(biāo)頭行(Header)、腳注行(Footer)和頁導(dǎo)航行(Pager)RowType屬性(DataControlRowType對(duì)象)提供了Rows、HeaderRow、FooterRow、TopPagerRow和BottomPagerRow等屬性來引用行能夠以多種狀態(tài)存在,交替行(Alternate)、正常默認(rèn)模式(Normal)、編輯模式(Edit)和插入模式(Insert)。RowState屬性(返回DataControlRowState枚舉對(duì)象)DetailsView數(shù)據(jù)綁定控件DetailsView控件的構(gòu)成屬性RowIndex繼承了普通網(wǎng)頁控件(WebControl)用于設(shè)置界面特征的屬性Visible(是否可見)、Font(字體信息)、前景色(ForeColor)、背景色(BackColor)、高度(Height)、寬度(Width)、邊框?qū)挾龋˙orderWidth)、邊框顏色(BorderColor)和邊框樣式(BorderStyle)繼承了TableRow類用于設(shè)置顯示格式的一些屬性HorizontalAlign(水平對(duì)齊方式)和VerticalAlign(垂直對(duì)齊方式)DetailsView控件的數(shù)據(jù)操作數(shù)據(jù)的檢索和顯示DataSourceID屬性根據(jù)Fields集合中各個(gè)DataControlField對(duì)象的屬性,利用多個(gè)DetaisViewRow行對(duì)象來顯示第一條記錄的各個(gè)字段ItemCreated事件可以使用DataKey或SelectedValue獲取DataKeyNames指定的鍵字段信息DetailsView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁AllowPaging屬性PageIndex、PageCount等屬性或SetPageIndex等方法(每個(gè)頁一般只顯示一條記錄)PagerSettings屬性自定義PagerTemplatePageIndexChanging和PageIndexChanged事件參數(shù)對(duì)象包含的屬性和操作與GridView控件基本相同DetailsView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯、刪除和添加三種記錄顯示模式—只讀模式(ReadOnly)、編輯模式(Edit)、插入模式(Insert)CurrentMode屬性或ChangeMode方法(DetailsViewMode枚舉類型),或使用按鈕ModeChanging事件,DetailsViewModeEventArgs類型的參數(shù)Cancel,NewMode,CancellingEdit,DefaultModeModeChangedDetailsView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯、刪除和添加增加數(shù)據(jù)修改界面AutoGenerateEditButton、AutoGenerateDeleteButton和AutoGenerateInsertButton在Fields集合中顯式定義CommandField對(duì)象,將ShowEditButton、ShowDeleteButton、ShowInsertButton等屬性設(shè)置為true在DetailsView控件中自己添加CommandName屬性為“Edit”、“Delete”、“New”、“Update”、“Insert”和“Cancel”的按鈕(要自己處理界面的切換工作)DetailsView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯、刪除和添加ItemUpdating事件,傳遞一個(gè)DetailsViewUpdateEventArgs類參數(shù)對(duì)象Cancel,CommandArgument,Keys、OldValues和NewValues(包含所有字段)ItemUpdated事件,傳遞一個(gè)DetailsViewUpdatedEventArgs類型的參數(shù)Keys、OldValues和NewValues,AffectedRows、Exception和ExceptionHandled,KeepInEditModeDetailsView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯、刪除和添加ItemInserting事件,傳遞一個(gè)DetailsViewInsertEventArgs類型的參數(shù)Cancel和CommandArgument,Values字典ItemInserted事件,傳遞一個(gè)DetailsInsertedEventArgs類型的參數(shù)AffectedRows、Exception、ExceptionHandled、Values,KeepInInsertModeDetailsView控件的數(shù)據(jù)操作數(shù)據(jù)的編輯、刪除和添加ItemDeleting事件,傳遞一個(gè)DetailsViewDeleteEventArgs類型的參數(shù)Cancel,RowIndex,Keys和ValuesItemDeleted事件,DetailsViewDeletedEventArgs類對(duì)象Keys和Values字典,AffectedRows、Exception、ExceptionHandledItemCommand事件,DetailsViewCommandEventArgs類型的參數(shù)直接調(diào)用的數(shù)據(jù)源操作方法DeleteItem(刪除當(dāng)前記錄)、UpdateItem(更新當(dāng)前記錄)和InsertItem(將當(dāng)前記錄插入數(shù)據(jù)源中)支持調(diào)用OnItemCommand、OnItemUpdating、OnItedDeleted等直接觸發(fā)相應(yīng)事件的方法DetailsView控件的數(shù)據(jù)操作界面設(shè)置用于總體顯示格式設(shè)置的屬性Height、GridLines、CellSpacing、Font、Caption、CaptionAlign模板PagerTemplate、EmptyDataTemplate、HeaderTemplate、FooterTemplateHeaderText和FooterTextTableItemStyle類屬性RowStyle(數(shù)據(jù)行樣式)、AlternatingRowStyle(交替數(shù)據(jù)行的樣式)、CommandRowStyle(包含命令按鈕的行的樣式)、EditRowStyle(處于編輯模式時(shí)數(shù)據(jù)行的樣式)、InsertRowStyle(處于插入模式時(shí)數(shù)據(jù)行的樣式)、EmptyDataRowStyle(空數(shù)據(jù)行的樣式)、HeaderStyle(標(biāo)頭行的樣式)、FooterStyle(腳注行的樣式)、PagerStyle(頁導(dǎo)航行的樣式)。ListView數(shù)據(jù)綁定控件ListView數(shù)據(jù)綁定控件使用ItemTemplate模板為每條記錄都創(chuàng)建一個(gè)ListViewItem對(duì)象若干ListViewItem對(duì)象在運(yùn)行時(shí)依序放入一個(gè)LayoutTemplate模板(根布局)定義的容器內(nèi)模板的定義中必須包含一個(gè)占位符控件,如tr、div或span等ID一般定義為“itemPlaceHolder”也可以使用ListView控件的ItemPlaceHolderID來指定其它名稱ListView數(shù)據(jù)綁定控件可以對(duì)ListViewItem對(duì)象集合進(jìn)行分組在LayoutTemplate模板中定義一個(gè)包含分組模板的容器控件,定義其ID為“GroupPlaceHolder”(GroupPlaceHolderID屬性)定義一個(gè)GroupTemplate模板,在該模板中定義中包含一個(gè)ListViewItem對(duì)象使用的容器控件在運(yùn)行時(shí),ListView控件首先根據(jù)ItemTemplate模板的定義填充GroupTemplate定義的容器對(duì)象,填充的對(duì)象個(gè)數(shù)使用ListView控件的GroupItemCount屬性指定,該容器創(chuàng)建完畢后,再將其填充到LayoutTemplate模板定義的容器對(duì)象,然后開始下一個(gè)GroupTemplate模板定義的容器對(duì)象的填充過程,依次填充,直到完成整個(gè)頁面GroupSeparatorTemplate和ItemSeparatorTemplate指示ListView控件在分組之間和數(shù)據(jù)項(xiàng)之間呈現(xiàn)相應(yīng)的內(nèi)容。ListViewItem類Controls屬性集合或者FindControl方法ListView數(shù)據(jù)綁定控件根據(jù)數(shù)據(jù)記錄創(chuàng)建的ListViewItem對(duì)象將被添加到ListView控件的Items屬性集合中實(shí)際上添加的是ListViewDataItem對(duì)象,它從ListViewItem對(duì)象派生,重寫了DataItem、DataItemIndex、DisplayIndex三個(gè)屬性ListViewItem對(duì)象的其他類型插入項(xiàng)(InsertItem)和空項(xiàng)(EmptyItem)ItemType屬性(ListViewItemType枚舉類型)InsertItem屬性,EditItem屬性ListView控件的數(shù)據(jù)操作數(shù)據(jù)的檢索和顯示ItemCreated事件,傳遞一個(gè)ListViewItemEventArgs類型參數(shù)Item屬性獲取創(chuàng)建的ListViewItem對(duì)象的引用對(duì)其進(jìn)行一些修改或者添加一些自定義的內(nèi)容ItemDataBound事件,它也會(huì)傳遞當(dāng)前ListViewItem對(duì)象的引用,通常用于修改綁定數(shù)據(jù)的內(nèi)容LayoutCreated事件,可以在此事件處理代碼中對(duì)根布局進(jìn)行更改。ListView控件的數(shù)據(jù)操作數(shù)據(jù)的檢索和顯示記錄選擇公開了SelectItem方法在ItemTemplate和AlternatingItemTemplate模板中添加一個(gè)按鈕,將其CommandName設(shè)置為“Select”SelectedIndexChanging事件,傳遞一個(gè)ListViewSelectEventArgs類型的參數(shù)Cancel,NewSelectedIndexSelectedIndexChanged事件SelectedDataKey(預(yù)先設(shè)置DataKeyNames屬性)、SelectedIndex、SelectedValueListView控件的數(shù)據(jù)操作數(shù)據(jù)的排序公開了Sort方法定義一個(gè)CommandName為“Sort”的按鈕,將其CommandArgument設(shè)置為排序表達(dá)式Sorting事件,傳遞一個(gè)ListViewSortEventArgs類型的參數(shù)Cancel,SortExpression和SortDirectionSorted事件ListView控件的SortExpression和SortDirection屬性ListView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁-原理實(shí)現(xiàn)一個(gè)接口IPageableItemContainer,由一個(gè)DataPager類控件來協(xié)助實(shí)現(xiàn)分頁界面DataPager控件可以放置在ListView控件的LayoutTemplate模板之中,也可以放于ListView控件之外,但放于外部時(shí)需將其PagedControlID設(shè)置為它所控制的ListView控件的IDDataPager對(duì)象的PageSize屬性,EnablePersistedSelection屬性ListView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁-原理IpageableItemContainer接口包含兩個(gè)頁面信息屬性StrartRowIndex(數(shù)據(jù)頁上顯示的第一條記錄的索引)MaximumRows(單個(gè)數(shù)據(jù)頁上顯示的最大項(xiàng)數(shù))實(shí)現(xiàn)一個(gè)方法SetPageProperties(使用兩個(gè)相應(yīng)的參數(shù)設(shè)置頁面信息屬性)一個(gè)事件TotalRowCountAvailable(由DataPager控件使用,實(shí)現(xiàn)獲取數(shù)據(jù)源記錄總數(shù)信息等操作)DataPager控件也包含StartRowIndex和MaximumRows兩個(gè)屬性以及SetPageProperties方法調(diào)用SetPageProperties方法時(shí),它會(huì)用參數(shù)值設(shè)置前兩個(gè)屬性并調(diào)用ListView控件的SetProperties方法來更新ListView的頁面信息相關(guān)屬性(如StartRowIndex和MaximumRows)。ListView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁-原理DataPager控件還包括一個(gè)TotalRowCount屬性通過處理ListView控件的TotalRowCountAvailable事件獲取OnTotalRowCountAvailable方法PageEventArgs類型的參數(shù)StartRowIndex、MaximumRows和TotalRowCount方法ConnectToEvents將OnTotalRowCountAvailable方法指定為L(zhǎng)istView控件的TotalRowCountAvailable事件的處理函數(shù)當(dāng)ListView控件可以獲取基礎(chǔ)數(shù)據(jù)源中的總記錄數(shù)時(shí),它會(huì)引發(fā)TotalRowCountAvailable事件ListView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁DataPager控件支持三種類型的導(dǎo)航界面頁碼型(NumericPagerField)、上下頁型(NextPreviousPagerField)和自定義型(TemplatePagerField)使用類似的DataPagerField對(duì)象集合(Fields集合屬性),可以同時(shí)包含三類導(dǎo)航頁面DataPagerField類DataPager,QueryStringValue和QueryStringHandled三個(gè)派生類—NumericPagerField、NextPreviousPagerField和TemplatePagerField重寫CreateDataPagers(創(chuàng)建用戶界面并添加到指定容器)、CreateField(創(chuàng)建從DataPagerField派生的空對(duì)象)和HandleEvent(處理在頁導(dǎo)航字段對(duì)象中發(fā)生的事件)ListView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁NumericPagerField字段顯示頁碼(按鈕形式)還能夠顯示上一頁、下一頁按鈕ButtonCount屬性按鈕的類型有三種—普通按鈕(Button)、圖像按鈕(Image)、超鏈接按鈕(Link),ButtonType屬性(ButtonType枚舉類型)上一頁和下一頁按鈕上可以顯示文本(通過PreviousPageText和NextPageText屬性設(shè)置),也可以顯示圖像(通過PreviousPageImagUrl和NextPageImageUrl屬性設(shè)置),格式設(shè)置,NumericButtonCssClass,CurrrentPageLabelCssClass,NextPreviousButtonCssClassListView控件的數(shù)據(jù)操作數(shù)據(jù)的分頁NextPreviousPagerField字段顯示下一頁、上一頁、第一頁、最后頁等按鈕用于導(dǎo)航按鈕的類型(ButtonType屬性):Button、Im

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論