第5章數(shù)據(jù)訪問技術(shù)_第1頁
第5章數(shù)據(jù)訪問技術(shù)_第2頁
第5章數(shù)據(jù)訪問技術(shù)_第3頁
第5章數(shù)據(jù)訪問技術(shù)_第4頁
第5章數(shù)據(jù)訪問技術(shù)_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第5章章 數(shù)據(jù)訪問技術(shù)數(shù)據(jù)訪問技術(shù) 5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問 5.2 ASP.NET數(shù)據(jù)綁定數(shù)據(jù)綁定 5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件 5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 5.5 典型案例及分析典型案例及分析 5.6 本章小結(jié)本章小結(jié) 5.7 項目實訓(xùn)項目實訓(xùn)5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問5.1.1 ADO.NET概述概述 ADO.NET是是.NET Framework提供的數(shù)據(jù)訪問類庫,它對提供的數(shù)據(jù)訪問類庫,它對Microsoft SQL Server、Oracle和和XML等數(shù)據(jù)源提供一致的訪問。應(yīng)用程序可以使用等數(shù)據(jù)源提供一致的訪問

2、。應(yīng)用程序可以使用ADO.NET連接到這些數(shù)據(jù)源,并檢索和更新所包含的數(shù)據(jù)。連接到這些數(shù)據(jù)源,并檢索和更新所包含的數(shù)據(jù)。 ADO.NET是數(shù)據(jù)庫應(yīng)用程序與數(shù)據(jù)源之間溝通的橋梁,主要提供一是數(shù)據(jù)庫應(yīng)用程序與數(shù)據(jù)源之間溝通的橋梁,主要提供一個面向?qū)ο蟮臄?shù)據(jù)庫訪問架構(gòu),用來開發(fā)數(shù)據(jù)庫的應(yīng)用程序。個面向?qū)ο蟮臄?shù)據(jù)庫訪問架構(gòu),用來開發(fā)數(shù)據(jù)庫的應(yīng)用程序。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問5.1.2 ADO.NET數(shù)據(jù)提供者數(shù)據(jù)提供者ADO.NET數(shù)據(jù)提供程者提供了用于訪問特定數(shù)據(jù)庫、執(zhí)行數(shù)據(jù)提供程者提供了用于訪問特定數(shù)據(jù)庫、執(zhí)行SQL語句并接收語句并接收數(shù)據(jù)庫的命令,數(shù)據(jù)提供者在數(shù)據(jù)庫和數(shù)據(jù)庫的命

3、令,數(shù)據(jù)提供者在數(shù)據(jù)庫和ASP.NET應(yīng)用程序之間提供了一座應(yīng)用程序之間提供了一座橋梁。橋梁。ADO.NET的數(shù)據(jù)提供者有的數(shù)據(jù)提供者有Connection、Command、DataReader、DataSet和和DataAdapter 5個對象組成,通過這些對象,可以對數(shù)據(jù)庫進行查詢、個對象組成,通過這些對象,可以對數(shù)據(jù)庫進行查詢、添加、修改以及刪除的處理操作。添加、修改以及刪除的處理操作。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問(1)Connection對象主要提供與數(shù)據(jù)庫的連接功能。對象主要提供與數(shù)據(jù)庫的連接功能。(2)Command對象用于返回數(shù)據(jù),修改數(shù)據(jù),運行存儲過程以及發(fā)送對象

4、用于返回數(shù)據(jù),修改數(shù)據(jù),運行存儲過程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)命令。或檢索參數(shù)信息的數(shù)據(jù)命令。(3)DataReade對象通過對象通過Command對象提供從數(shù)據(jù)庫檢索信息的功能。對象提供從數(shù)據(jù)庫檢索信息的功能。DataReader對象是一種只讀的、向前的、快速的數(shù)據(jù)庫訪問方式。對象是一種只讀的、向前的、快速的數(shù)據(jù)庫訪問方式。(4)DataSet是是ADO.NET的中心概念,是支持的中心概念,是支持ADO.NET斷開式、分布式數(shù)斷開式、分布式數(shù)據(jù)方案的核心對象。它是一個數(shù)據(jù)庫容器,可以把它當(dāng)做是存在于內(nèi)存據(jù)方案的核心對象。它是一個數(shù)據(jù)庫容器,可以把它當(dāng)做是存在于內(nèi)存中的數(shù)據(jù)庫。中的數(shù)據(jù)庫。D

5、ataSet是數(shù)據(jù)庫內(nèi)存駐留表示形式。無論數(shù)據(jù)源是什么,是數(shù)據(jù)庫內(nèi)存駐留表示形式。無論數(shù)據(jù)源是什么,它都會提供一致的關(guān)系編程模型。它可以用戶多種不同的數(shù)據(jù)源。它都會提供一致的關(guān)系編程模型。它可以用戶多種不同的數(shù)據(jù)源。(5)DataAdpater對象提供連接對象提供連接DataSet對象和數(shù)據(jù)源的橋梁,對象和數(shù)據(jù)源的橋梁,DataAdapter使用使用Command對象在數(shù)據(jù)源中執(zhí)行對象在數(shù)據(jù)源中執(zhí)行SQL命令以便將數(shù)據(jù)加載命令以便將數(shù)據(jù)加載到到DataSet中,并確保中,并確保DataSet中數(shù)據(jù)的更改與數(shù)據(jù)源一致。中數(shù)據(jù)的更改與數(shù)據(jù)源一致。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問5.1.3

6、建立數(shù)據(jù)庫連接建立數(shù)據(jù)庫連接Connection對象對象 所有數(shù)據(jù)庫的訪問操作都是從建立數(shù)據(jù)庫連接開始的。所有數(shù)據(jù)庫的訪問操作都是從建立數(shù)據(jù)庫連接開始的。Connection對對象就是用于連接數(shù)據(jù)庫和管理數(shù)據(jù)庫的事務(wù)。它的一些屬性描述數(shù)據(jù)源象就是用于連接數(shù)據(jù)庫和管理數(shù)據(jù)庫的事務(wù)。它的一些屬性描述數(shù)據(jù)源和用戶身份驗證。和用戶身份驗證。Connection對象還提供一些方法允許程序員與數(shù)據(jù)源對象還提供一些方法允許程序員與數(shù)據(jù)源建立連接或者斷開連接。建立連接或者斷開連接。 SQL Server.NET數(shù)據(jù)提供程序的數(shù)據(jù)提供程序的SqlConnection連接對象,命名看空間連接對象,命名看空間為為S

7、ystem.Data.SqlClient.SqlConnection5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問 1. SQL Server數(shù)據(jù)連接字符串?dāng)?shù)據(jù)連接字符串 連接字符串通常由分號隔開的名稱和值組成。它指定數(shù)據(jù)庫運行庫連接字符串通常由分號隔開的名稱和值組成。它指定數(shù)據(jù)庫運行庫的設(shè)置。在連接數(shù)據(jù)庫時只要使用幾個主要的參數(shù)就可以完成連接數(shù)據(jù)的設(shè)置。在連接數(shù)據(jù)庫時只要使用幾個主要的參數(shù)就可以完成連接數(shù)據(jù)庫的操作。庫的操作。參參 數(shù)數(shù)描描 述述Initial Catalog或Database要連接的數(shù)據(jù)庫的名稱Data Source或Server設(shè)置要連接的SQL Server服務(wù)器名稱IPI

8、ntegrated Security或Trusted_Connection指定是否使用信任連接Password或pwdSQL Server賬戶的登錄密碼User ID或uidSQL Server登錄賬戶Connection Timeout 連接超時5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問 SQL Server數(shù)據(jù)庫的連接有兩種連接模式,下面將對這兩種連接模式分數(shù)據(jù)庫的連接有兩種連接模式,下面將對這兩種連接模式分別介紹。別介紹。 以混合模式連接以混合模式連接使用此種連接模式必須輸入登錄名和登錄口令。其基本格式如下:使用此種連接模式必須輸入登錄名和登錄口令。其基本格式如下:string conS

9、tring = server=DONETDONET2008;database=news;uid=sa;pwd=sa; SqlConnection conn = new SqlConnection(conString);windows模式連接模式連接以以windows連接模式必須將連接模式必須將Trusted_Connection設(shè)置為設(shè)置為true,或者使用,或者使用Integrated Security設(shè)置為設(shè)置為true。其格式如下:。其格式如下:string conString = server=DONETDONET2008;database=news; Trusted_Connecti

10、on=true; SqlConnection conn = new SqlConnection(conString);5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問2. 連接數(shù)據(jù)庫連接數(shù)據(jù)庫ADO.NET專門提供了專門提供了SQL Server.NET數(shù)據(jù)提供程序用于連接數(shù)據(jù)提供程序用于連接SQL Server數(shù)據(jù)庫的類數(shù)據(jù)庫的類SqlConnection。在打開數(shù)據(jù)庫連接之。在打開數(shù)據(jù)庫連接之前,必須先設(shè)置好數(shù)據(jù)庫連接字符串,否則前,必須先設(shè)置好數(shù)據(jù)庫連接字符串,否則SqlConnection對對象不知道要與哪一個數(shù)據(jù)庫建立連接,然后再調(diào)用其象不知道要與哪一個數(shù)據(jù)庫建立連接,然后再調(diào)用其Open

11、()()方法打開連接,此時便可以對數(shù)據(jù)庫進行訪問,最后調(diào)用方法打開連接,此時便可以對數(shù)據(jù)庫進行訪問,最后調(diào)用Close()方法關(guān)閉連接。()方法關(guān)閉連接。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問5.1.4 執(zhí)行數(shù)據(jù)庫命令執(zhí)行數(shù)據(jù)庫命令Command對象對象使用使用Connection對象與數(shù)據(jù)源建立連接后,可使用對象與數(shù)據(jù)源建立連接后,可使用Command對象讀數(shù)據(jù)源執(zhí)行查詢、添加、修改和刪除等各種操作,操對象讀數(shù)據(jù)源執(zhí)行查詢、添加、修改和刪除等各種操作,操作實現(xiàn)的方式可是使用作實現(xiàn)的方式可是使用SQL語句,也可以時使用存儲過程。語句,也可以時使用存儲過程。對于對于SQL Server數(shù)據(jù)庫

12、,使用的是數(shù)據(jù)庫,使用的是SqlCommand類。類。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問1. SqlCommand的常用屬性和方法的常用屬性和方法Command最主要的功能就是對數(shù)據(jù)庫執(zhí)行最主要的功能就是對數(shù)據(jù)庫執(zhí)行SQL語句,它是語句,它是ADO.NET中操中操作數(shù)據(jù)庫的最基本對象,也是查詢數(shù)據(jù)庫不可缺少的對象之一。作數(shù)據(jù)庫的最基本對象,也是查詢數(shù)據(jù)庫不可缺少的對象之一。屬屬 性性描描 述述CommandText獲取或設(shè)置要對數(shù)據(jù)源執(zhí)行的 Transact-SQL 語句、表名或存儲過程CommandTimeout獲取或設(shè)置在終止執(zhí)行命令的嘗試并生成錯誤之前的等待時間CommandTy

13、pe獲取或設(shè)置一個值,該值指示如何解釋 CommandText 屬性Connection獲取或設(shè)置 SqlCommand 的此實例使用的 SqlConnectionParameters獲取 SqlParameterCollectionTransaction獲取或設(shè)置將在其中執(zhí)行 SqlCommand 的 SqlTransactionUpdatedRowSource獲取或設(shè)置命令結(jié)果在由 DbDataAdapter 的“Update”方法使用時,如何應(yīng)用于 DataRow5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問方方 法法描描 述述Cancel嘗試取消 SqlCommand 的執(zhí)行CreateP

14、arameter創(chuàng)建 SqlParameter 對象的新實例ExecuteReader將 CommandText 發(fā)送到 Connection 并生成一個 SqlDataReaderExecuteNonQuery對連接執(zhí)行 Transact-SQL 語句并返回受影響的行數(shù)ExecuteScalar執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列。 忽略其他列或行ExecuteXmlReader將 CommandText 發(fā)送到 Connection 并生成一個 XmlReader 對象5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問5.1.5 連線模式數(shù)據(jù)訪問連線模式數(shù)據(jù)訪問DataReader對

15、象對象 DataReader對象是一個簡單的數(shù)據(jù)集,用于從數(shù)據(jù)源中讀取只讀的對象是一個簡單的數(shù)據(jù)集,用于從數(shù)據(jù)源中讀取只讀的數(shù)據(jù)集,并常用于檢索大量數(shù)據(jù)。在數(shù)據(jù)集,并常用于檢索大量數(shù)據(jù)。在SQL Server數(shù)據(jù)庫中使用的時數(shù)據(jù)庫中使用的時SqlDataReader對象。對象。DataReader對象每次只能在內(nèi)存中保留一行,所以對象每次只能在內(nèi)存中保留一行,所以開銷非常小,接收內(nèi)存非常優(yōu)秀。開銷非常小,接收內(nèi)存非常優(yōu)秀。 如果只需要將數(shù)據(jù)讀出并顯示,那么如果只需要將數(shù)據(jù)讀出并顯示,那么DataReader對象是最適合的工對象是最適合的工具,它的讀取速度比稍后要講的具,它的讀取速度比稍后要講的

16、DataSet快,占用資源也比快,占用資源也比DataSet少。但少。但是是DataReader對象在讀取數(shù)據(jù)時要求數(shù)據(jù)庫一直保持在連線狀態(tài),只有對象在讀取數(shù)據(jù)時要求數(shù)據(jù)庫一直保持在連線狀態(tài),只有在讀完數(shù)據(jù)后才可以斷開。在讀完數(shù)據(jù)后才可以斷開。 程序可以通過程序可以通過Command對象的對象的ExecuteReader方法從數(shù)據(jù)源中檢索數(shù)方法從數(shù)據(jù)源中檢索數(shù)據(jù)來創(chuàng)建據(jù)來創(chuàng)建DataReader對象。對象。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問1DataReader對象的常用屬性和方法對象的常用屬性和方法屬屬 性性描描 述述HasRows判斷數(shù)據(jù)庫中是否有數(shù)據(jù)FieldCount獲取當(dāng)前行

17、的列數(shù)RecordsAffected獲取執(zhí)行SQL語句所更新、添加和刪除的行數(shù)方方 法法描描 述述Close關(guān)閉 DataReader 實例Read高級讀取器到下一個塊數(shù)據(jù),該讀取器包含多的一個塊數(shù)據(jù)Get用來讀取數(shù)據(jù)集的當(dāng)前行的某一列數(shù)據(jù)5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問2. 使用使用DataReader對象獲取數(shù)據(jù)對象獲取數(shù)據(jù) DataReader對象可以被稱為數(shù)據(jù)閱讀器,它是基于連接的、快速的、對象可以被稱為數(shù)據(jù)閱讀器,它是基于連接的、快速的、未緩沖的只向前移動的方式讀取數(shù)據(jù),一次只讀取一條記錄,然后在遍未緩沖的只向前移動的方式讀取數(shù)據(jù),一次只讀取一條記錄,然后在遍歷整個結(jié)果集。

18、歷整個結(jié)果集。 一般情況下,通過一般情況下,通過SqlCommand對象的對象的ExecuteReader()方法創(chuàng)建一()方法創(chuàng)建一個個SqlDataReader對象,對象,5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問5.1.6 離線模式數(shù)據(jù)訪問離線模式數(shù)據(jù)訪問DataSet對象對象DataSet對象時對象時ADO.NET最核心成員之一,它是支持最核心成員之一,它是支持ADO.NET斷開式、分斷開式、分布式數(shù)據(jù)庫方案的核心對象,也是實現(xiàn)基于非連接的數(shù)據(jù)庫查詢的核心布式數(shù)據(jù)庫方案的核心對象,也是實現(xiàn)基于非連接的數(shù)據(jù)庫查詢的核心組件。對于組件。對于DataSet對象可以將其看作是愛內(nèi)存中創(chuàng)建的一個

19、小型關(guān)系數(shù)對象可以將其看作是愛內(nèi)存中創(chuàng)建的一個小型關(guān)系數(shù)據(jù)庫,它將數(shù)據(jù)庫中的數(shù)據(jù)復(fù)制了一份放到用戶本地的內(nèi)存中,供用戶據(jù)庫,它將數(shù)據(jù)庫中的數(shù)據(jù)復(fù)制了一份放到用戶本地的內(nèi)存中,供用戶在不連接數(shù)據(jù)庫的情況下讀取數(shù)據(jù),充分利用了客戶端資源,大大降低在不連接數(shù)據(jù)庫的情況下讀取數(shù)據(jù),充分利用了客戶端資源,大大降低了數(shù)據(jù)庫服務(wù)器的壓力。了數(shù)據(jù)庫服務(wù)器的壓力。當(dāng)吧當(dāng)吧SQL Server數(shù)據(jù)庫的數(shù)據(jù)通過起數(shù)據(jù)庫的數(shù)據(jù)通過起“橋梁橋梁”作用的作用的SqlDataAdapter對象對象(主要為該對象的(主要為該對象的Fill方法)填充到方法)填充到DataSet數(shù)據(jù)集中后,就可以對數(shù)據(jù)庫數(shù)據(jù)集中后,就可以對數(shù)據(jù)

20、庫進行一個斷開連接,離線狀態(tài)的操作。進行一個斷開連接,離線狀態(tài)的操作。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問5.1.7 數(shù)據(jù)橋梁數(shù)據(jù)橋梁DataAdapter對象對象 DataAdapter對象又叫數(shù)據(jù)適配器,是一種充當(dāng)對象又叫數(shù)據(jù)適配器,是一種充當(dāng)DataSet對象與實際數(shù)對象與實際數(shù)據(jù)之間橋梁的對象,可以說只要有據(jù)之間橋梁的對象,可以說只要有DataSet對象的地方就有它,它也是專對象的地方就有它,它也是專門為門為DataSet服務(wù)的。服務(wù)的。 DataAdapter對象的工作步驟一般又兩種:一種是通過對象的工作步驟一般又兩種:一種是通過Command對象對象執(zhí)行執(zhí)行SQL語句從數(shù)據(jù)源

21、中檢索數(shù)據(jù),將獲取的結(jié)果集填充到語句從數(shù)據(jù)源中檢索數(shù)據(jù),將獲取的結(jié)果集填充到DataSet對象對象的表中;另一種是把用戶對的表中;另一種是把用戶對DataSet對象做出的更改寫入到數(shù)據(jù)源中。對對象做出的更改寫入到數(shù)據(jù)源中。對于于SQL Server數(shù)據(jù)庫而言,使用的適配器對象為數(shù)據(jù)庫而言,使用的適配器對象為SqlDataAdapter。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問1DataAdapter對象的常用屬性和方法對象的常用屬性和方法屬屬 性性描描 述述DeleteCommand獲取或設(shè)置一個 Transact-SQL 語句或存儲過程,以從數(shù)據(jù)集刪除記錄InsertCommand獲取或設(shè)

22、置一個 Transact-SQL 語句或存儲過程,以在數(shù)據(jù)源中插入新記錄SelectCommand獲取或設(shè)置一個 Transact-SQL 語句或存儲過程,用于在數(shù)據(jù)源中選擇記錄UpdateCommand獲取或設(shè)置一個 Transact-SQL 語句或存儲過程,用于更新數(shù)據(jù)源中的記錄方方 法法描描 述述Fill從數(shù)據(jù)源中提取數(shù)據(jù)以填充數(shù)據(jù)集Update更新數(shù)據(jù)源5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問 當(dāng)當(dāng)SqlDataAdapter調(diào)用調(diào)用Fill方法方法是,它將向數(shù)據(jù)存儲區(qū)傳輸一條方法方法是,它將向數(shù)據(jù)存儲區(qū)傳輸一條SQL SELECT語句,該方法主要用來填充或刷新語句,該方法主要用來填

23、充或刷新DataSet,返回值是影響,返回值是影響DataSet的行數(shù)。該方法的常用定義如下:的行數(shù)。該方法的常用定義如下:int Fill(DataSet dataset):添加或更新參數(shù)所指定的):添加或更新參數(shù)所指定的DataSet,返回值時影響的行數(shù)。返回值時影響的行數(shù)。int Fill(DataTable datatable):將數(shù)據(jù)填充到一個數(shù)據(jù)表中。):將數(shù)據(jù)填充到一個數(shù)據(jù)表中。Int Fill(DateSet dataset,String tableName):填充指定的):填充指定的DataSet中特定的表。中特定的表。2. 填充并訪問填充并訪問DataSet中的數(shù)據(jù)中的數(shù)據(jù)

24、 通過通過DataAdapter對象查詢數(shù)據(jù)之后,需要把數(shù)據(jù)填充到對象查詢數(shù)據(jù)之后,需要把數(shù)據(jù)填充到DataSet中。中。具體操作流程:首先使用具體操作流程:首先使用DataAdapter取出數(shù)據(jù),然后調(diào)用取出數(shù)據(jù),然后調(diào)用DataAdapter的的Fill方法,將取得的數(shù)據(jù)導(dǎo)入方法,將取得的數(shù)據(jù)導(dǎo)入DataSet中。中。5.1 ADO.NET數(shù)據(jù)庫訪問數(shù)據(jù)庫訪問3修改修改DataSet并更新數(shù)據(jù)源(批量更新)并更新數(shù)據(jù)源(批量更新) DataAdapter不但可以用來填充不但可以用來填充DataSet,還可以調(diào)用其,還可以調(diào)用其Update()方法方法將將DataSet中的更改解析回數(shù)據(jù)庫,

25、從而可以更新數(shù)據(jù)庫,包括插入。更中的更改解析回數(shù)據(jù)庫,從而可以更新數(shù)據(jù)庫,包括插入。更新和刪除。新和刪除。DataAdapter對象的對象的Update()方法常有如下定義:方法常有如下定義:Update(DataSet):根據(jù)指定的數(shù)據(jù)集中的數(shù)據(jù)表更新數(shù)據(jù)源。):根據(jù)指定的數(shù)據(jù)集中的數(shù)據(jù)表更新數(shù)據(jù)源。Update(DataTable):根據(jù)數(shù)據(jù)表更新數(shù)據(jù)源。):根據(jù)數(shù)據(jù)表更新數(shù)據(jù)源。Update(DataRows):根據(jù)指定的數(shù)據(jù)行數(shù)組更新數(shù)據(jù)源。):根據(jù)指定的數(shù)據(jù)行數(shù)組更新數(shù)據(jù)源。 當(dāng)調(diào)用當(dāng)調(diào)用Update()方法時,()方法時,DataAdapter將分析已作出的更改并執(zhí)行將分析已作出的

26、更改并執(zhí)行相應(yīng)的命令(相應(yīng)的命令(Insert、Update或或Delete)。當(dāng))。當(dāng)DataAdapter遇到遇到DataRow的的更新時,它將使用更新時,它將使用InsertCommand、UpdateCommand和和DeleteCommand來處理更新。來處理更新。5.2 ASP.NET數(shù)據(jù)綁定數(shù)據(jù)綁定 ASP.NET具有強大的數(shù)據(jù)綁定功能,所謂的數(shù)據(jù)綁定是指數(shù)據(jù)與控件具有強大的數(shù)據(jù)綁定功能,所謂的數(shù)據(jù)綁定是指數(shù)據(jù)與控件如何相互結(jié)合的方式。在如何相互結(jié)合的方式。在ASP.NET中,開發(fā)人員可以選擇性的綁定到簡單中,開發(fā)人員可以選擇性的綁定到簡單的屬性、集合、表達式或者是方法。根據(jù)所綁

27、定的控件的不同或綁定的的屬性、集合、表達式或者是方法。根據(jù)所綁定的控件的不同或綁定的屬性不同,屬性不同,ASP.NET中的數(shù)據(jù)綁定可以分為單值數(shù)據(jù)綁定與列表數(shù)據(jù)綁定。中的數(shù)據(jù)綁定可以分為單值數(shù)據(jù)綁定與列表數(shù)據(jù)綁定。如果需要,開發(fā)人員還可以定義自己的綁定。如果需要,開發(fā)人員還可以定義自己的綁定。5.2.1 單值綁定單值綁定 單值數(shù)據(jù)綁定允許為控件的某個屬性指定一個綁定表達式,可以在單值數(shù)據(jù)綁定允許為控件的某個屬性指定一個綁定表達式,可以在聲明代碼中直接使用綁定表達式進行綁定。單值綁定通常使用如下的語聲明代碼中直接使用綁定表達式進行綁定。單值綁定通常使用如下的語句來指定數(shù)據(jù)綁定表達式:句來指定數(shù)據(jù)

28、綁定表達式: 使用數(shù)據(jù)綁定并不只限于綁定到數(shù)據(jù)庫中的數(shù)據(jù),還可以是一個變使用數(shù)據(jù)綁定并不只限于綁定到數(shù)據(jù)庫中的數(shù)據(jù),還可以是一個變量,一個表達式或者是一個函數(shù),都可以在表達式中進行指定。但是必量,一個表達式或者是一個函數(shù),都可以在表達式中進行指定。但是必須注意,如果綁定類級別的變量或者是函數(shù),則必須指定其訪問方式為須注意,如果綁定類級別的變量或者是函數(shù),則必須指定其訪問方式為public或者或者protected類型。類型。5.2 ASP.NET數(shù)據(jù)綁定數(shù)據(jù)綁定5.2.2 重復(fù)值綁定重復(fù)值綁定 在前面介紹在前面介紹ADO.NET數(shù)據(jù)訪問時,我們曾使用數(shù)據(jù)訪問時,我們曾使用SqlDataRead

29、er記錄綁記錄綁定到定到DropDownList控件來顯示聯(lián)系人的編號。在這種綁定中,可以看到控件來顯示聯(lián)系人的編號。在這種綁定中,可以看到數(shù)據(jù)綁定顯示的不是一個單值,而是一個列表,這種綁定方式稱為重復(fù)數(shù)據(jù)綁定顯示的不是一個單值,而是一個列表,這種綁定方式稱為重復(fù)值綁定。值綁定。 ASP.NET中的中的ListBox、DropDownList。CheckBoxList和和RadioButtonList這幾個列表控件支持列表數(shù)據(jù)源,但在同一時刻只能顯示單一的屬性值這幾個列表控件支持列表數(shù)據(jù)源,但在同一時刻只能顯示單一的屬性值在列表中。除此之外,在列表中。除此之外,ASP.NET還提供了一些功能強

30、大的重復(fù)值綁定控件,還提供了一些功能強大的重復(fù)值綁定控件,如如GridView、DatailsView和和FormView等。這些控件可以綁定帶集合中的等。這些控件可以綁定帶集合中的多個值或所有值。重復(fù)值數(shù)據(jù)綁定控件通常具有如表多個值或所有值。重復(fù)值數(shù)據(jù)綁定控件通常具有如表5-8所示的屬性,用所示的屬性,用來綁定數(shù)據(jù)源。來綁定數(shù)據(jù)源。5.2 ASP.NET數(shù)據(jù)綁定數(shù)據(jù)綁定重復(fù)值綁定控件的數(shù)據(jù)綁定屬性重復(fù)值綁定控件的數(shù)據(jù)綁定屬性屬屬 性性描描 述述DataSourse包含要顯示的數(shù)據(jù)的數(shù)據(jù)對象,該對象必須實現(xiàn)ASP.NET數(shù)據(jù)綁定支持的集合,通常是ICollectionDataSourseID使

31、用該屬性連接到一個數(shù)據(jù)源控件,使開發(fā)人員能用聲明方式編程而不用編寫程序代碼。DataTextField指定列表控件將顯示為控件文本的值,數(shù)據(jù)源集合通常包括多個列或者多個屬性,使用DataTextField屬性可以指定哪一列或?qū)傩詳?shù)據(jù)進行顯示DataTextFormatString指定DataTextField屬性將顯示的格式DataValueField該屬性與DataTextField屬性類似,但該屬性的值時不可見的,可以使用代碼對該屬性的值進行訪問,比如列表控件的SelectedValue屬性5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件 ASP.NET4.0中主要六種數(shù)據(jù)源控件:中主要六種數(shù)據(jù)

32、源控件:SqlDataSourse控件:允許開發(fā)人員連接到任何具有控件:允許開發(fā)人員連接到任何具有ADO.NET提供提供者的數(shù)據(jù)源,包括者的數(shù)據(jù)源,包括SQL Server、Oracle和和OLE DB以及以及ODBC數(shù)據(jù)源。數(shù)據(jù)源。LinqDataSourse控件:提供語言集成查詢(控件:提供語言集成查詢(Linq To SQL)數(shù)據(jù)源。)數(shù)據(jù)源。ObjectDataSourse控件:該數(shù)據(jù)源允許連接到一個自定義的數(shù)據(jù)控件:該數(shù)據(jù)源允許連接到一個自定義的數(shù)據(jù)訪問類,對于大型可伸縮性應(yīng)用程序使用訪問類,對于大型可伸縮性應(yīng)用程序使用ObjectDataSourse是一個較好的是一個較好的辦法。辦

33、法。AccessDataSourse控件:讀取寫入控件:讀取寫入Access數(shù)據(jù)庫文件(數(shù)據(jù)庫文件(.mdb)。)。XmlDataSourse控件:允許連接到控件:允許連接到XML文件,提供文件,提供XML文件的層文件的層次結(jié)果信息。次結(jié)果信息。SiteMapDataSourse控件:連接到站點地圖。控件:連接到站點地圖。 大多數(shù)大多數(shù)ASP.NET服務(wù)器控件都具有服務(wù)器控件都具有DataSourseID屬性,使用該屬性指屬性,使用該屬性指定一個數(shù)據(jù)源控件便建立了數(shù)據(jù)源與控件之間的聯(lián)系。定一個數(shù)據(jù)源控件便建立了數(shù)據(jù)源與控件之間的聯(lián)系。5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件5.3.1 數(shù)據(jù)綁

34、定的頁面生存期數(shù)據(jù)綁定的頁面生存期數(shù)據(jù)綁定控件的產(chǎn)生順序如下:數(shù)據(jù)綁定控件的產(chǎn)生順序如下:(1)創(chuàng)建)創(chuàng)建Page對象。對象。(2)開始頁面生命周期,)開始頁面生命周期,Page.Init和和Page.Load事件觸發(fā)。事件觸發(fā)。(3)所有控件事件觸發(fā)。)所有控件事件觸發(fā)。(4)如果數(shù)據(jù)源控件中有任何更新,則完成更新行為,并觸發(fā)數(shù)據(jù)源控)如果數(shù)據(jù)源控件中有任何更新,則完成更新行為,并觸發(fā)數(shù)據(jù)源控件的件的Updating和和Updated事件。如果有插入新行,則觸發(fā)事件。如果有插入新行,則觸發(fā)Inserting和和Inserted事件。如果有刪除行,則觸發(fā)事件。如果有刪除行,則觸發(fā)Deletin

35、g和和Deleted事件。事件。(5)Page.PreRender事件觸發(fā)。事件觸發(fā)。(6)數(shù)據(jù)源控件完成查詢、并將查詢數(shù)據(jù)發(fā)送到相連接的控件中。)數(shù)據(jù)源控件完成查詢、并將查詢數(shù)據(jù)發(fā)送到相連接的控件中。(7)頁面輸出完成并被釋放。)頁面輸出完成并被釋放。每當(dāng)有頁面請求產(chǎn)生時,都將重復(fù)這個過程,這也意味著數(shù)據(jù)源控件每每當(dāng)有頁面請求產(chǎn)生時,都將重復(fù)這個過程,這也意味著數(shù)據(jù)源控件每次次PostBack時都會查詢數(shù)據(jù)庫。時都會查詢數(shù)據(jù)庫。5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件5.3.2 SqlDataSourse控件控件1SqlDataSourse控件的常用屬性和事件控件的常用屬性和事件5.3 A

36、SP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件事事 件件描描 述述DataBinding當(dāng)服務(wù)器控件綁定到數(shù)據(jù)源時發(fā)生Deleted完成刪除操作后發(fā)生Deleting執(zhí)行刪除操作前發(fā)生Inserted完成插入操作后發(fā)生Inserting執(zhí)行插入操作前發(fā)生Selected數(shù)據(jù)檢索操作完成后發(fā)生Selecting執(zhí)行數(shù)據(jù)檢索操作前發(fā)生Updated完成更新操作后發(fā)生Updating執(zhí)行更新操作前發(fā)生5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件2. 使用參數(shù)過濾數(shù)據(jù)使用參數(shù)過濾數(shù)據(jù) 應(yīng)用程序通常需要根據(jù)用戶的響應(yīng)來動態(tài)的組建數(shù)據(jù)庫查詢,比如應(yīng)用程序通常需要根據(jù)用戶的響應(yīng)來動

37、態(tài)的組建數(shù)據(jù)庫查詢,比如在產(chǎn)品數(shù)據(jù)表中可能需要根據(jù)用戶的選擇只查詢指定在產(chǎn)品數(shù)據(jù)表中可能需要根據(jù)用戶的選擇只查詢指定ID的信息。再或者的信息。再或者應(yīng)用程序需要一個主從表式表格,根據(jù)用戶在主表中的選擇動態(tài)的顯示應(yīng)用程序需要一個主從表式表格,根據(jù)用戶在主表中的選擇動態(tài)的顯示從表中與主表相關(guān)的記錄。從表中與主表相關(guān)的記錄。SqlDataSourse提供了多種類型的命令參數(shù),提供了多種類型的命令參數(shù),簡化了開發(fā)人員創(chuàng)建這類應(yīng)用是的復(fù)雜性,使開發(fā)人員可以通過聲明的簡化了開發(fā)人員創(chuàng)建這類應(yīng)用是的復(fù)雜性,使開發(fā)人員可以通過聲明的方式來創(chuàng)建動態(tài)查詢。方式來創(chuàng)建動態(tài)查詢。3. 更新數(shù)據(jù)更新數(shù)據(jù) SqlData

38、Sourse控件可以使用它的四個控件可以使用它的四個Command屬性來執(zhí)行屬性來執(zhí)行SQL命令命令或者存儲過程來完成查詢、新增、更新和刪除工作。或者存儲過程來完成查詢、新增、更新和刪除工作。5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件5.3.3 ObjectDataSourse控件控件使用使用SqlDataSourse控件聲明式的與數(shù)據(jù)庫進行訪問非常簡單,但是有很控件聲明式的與數(shù)據(jù)庫進行訪問非常簡單,但是有很多缺陷,一個主要的問題是多缺陷,一個主要的問題是SqlDataSourse與與UI曾過于緊密,造成以后的曾過于緊密,造成以后的維護和修改很困難。維護和修改很困難。ASP.NET提供了另外一

39、個功能強大的數(shù)據(jù)源控件提供了另外一個功能強大的數(shù)據(jù)源控件ObjectDataSourse,該控件并不是直接與數(shù)據(jù)庫進行綁定,而是綁定到一,該控件并不是直接與數(shù)據(jù)庫進行綁定,而是綁定到一個業(yè)務(wù)對象上。個業(yè)務(wù)對象上。5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件1ObjectDataSourse控件的常用屬性和事件控件的常用屬性和事件屬屬 性性描描 述述Adapter獲取控件的瀏覽器特定適配器DeleteMethod獲取或設(shè)置 ObjectDataSource 控件調(diào)用刪除數(shù)據(jù)方法或函數(shù)的名稱DeleteParameters獲取包含參數(shù) DeleteMethod 方法使用的參數(shù)集合InsertMeth

40、od獲取或設(shè)置 ObjectDataSource 控件調(diào)用以將數(shù)據(jù)方法或函數(shù)的名稱InsertParameters獲取包含參數(shù) InsertMethod 屬性使用的參數(shù)集合SelectMethod獲取或設(shè)置 ObjectDataSource 控件調(diào)用檢索數(shù)據(jù)方法或函數(shù)的名稱SelectParameters獲取 SelectMethod 屬性指定的方法使用參數(shù)的集合UpdateMethod獲取或設(shè)置 ObjectDataSource 控件調(diào)用更新數(shù)據(jù)方法或函數(shù)的名稱UpdateParameters獲取包含參數(shù)的方法使用由 UpdateMethod 屬性指定的參數(shù)集合TypeName獲取或設(shè)置 O

41、bjectDataSource 對象表示類的名稱5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件事事 件件描描 述述DataBinding當(dāng)服務(wù)器控件綁定到數(shù)據(jù)源時發(fā)生Deleted完成刪除操作后發(fā)生Deleting執(zhí)行刪除操作前發(fā)生Inserted完成插入操作后發(fā)生Inserting執(zhí)行插入操作前發(fā)生Selected數(shù)據(jù)檢索操作完成后發(fā)生Selecting執(zhí)行數(shù)據(jù)檢索操作前發(fā)生Updated完成更新操作后發(fā)生Updating執(zhí)行更新操作前發(fā)生5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件2創(chuàng)建業(yè)務(wù)對象類創(chuàng)建業(yè)務(wù)對象類 在在ObjectDataSourse控件綁定中與之綁定的類需要注意以下幾條規(guī)則:控件

42、綁定中與之綁定的類需要注意以下幾條規(guī)則:(1)所有的邏輯必須包含在單一類中。)所有的邏輯必須包含在單一類中。(2)類中必須有一個方法用于提供查詢結(jié)果。)類中必須有一個方法用于提供查詢結(jié)果。(3)如果查詢結(jié)果有多個記錄,必須被描述為一個集合或者是)如果查詢結(jié)果有多個記錄,必須被描述為一個集合或者是數(shù)組、數(shù)組、DataSet、DataTable、DataView或者一個實現(xiàn)或者一個實現(xiàn)IEnumerable的列表的列表對象。每條記錄應(yīng)該是一個經(jīng)由對象。每條記錄應(yīng)該是一個經(jīng)由Public屬性公開其信息的自定義對象。屬性公開其信息的自定義對象。 (4)類中可以使用靜態(tài)方法或?qū)嵗椒?。但是必須注意,如?/p>

43、使)類中可以使用靜態(tài)方法或?qū)嵗椒ā5潜仨氉⒁?,如果使用實例方法,那么必須為類提供一個無參數(shù)的構(gòu)造函數(shù),用實例方法,那么必須為類提供一個無參數(shù)的構(gòu)造函數(shù),ObjectDataSourse將在需要時調(diào)用該函數(shù)實例化該類。將在需要時調(diào)用該函數(shù)實例化該類。 (5)對象必須是無狀態(tài)的。)對象必須是無狀態(tài)的。ObjectDataSourse控件僅在需要時實例控件僅在需要時實例化該對象,在請求結(jié)束是銷毀對象,因此勁量避免對象的狀態(tài)。化該對象,在請求結(jié)束是銷毀對象,因此勁量避免對象的狀態(tài)。5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件強類型強類型DataSet與與ObjectDataSourseDataSet

44、數(shù)據(jù)集是數(shù)據(jù)表數(shù)據(jù)集是數(shù)據(jù)表DataTable的集合,而強類型的的集合,而強類型的DataSet即是繼承即是繼承自自DataTable的強類型的的強類型的DataTable的集合。在的集合。在VS2010中添加強類型中添加強類型DataSet后,會自動的生成強類型的數(shù)據(jù)表后,會自動的生成強類型的數(shù)據(jù)表DataTable以及以及Adaptor用于添用于添加刪除數(shù)據(jù)等,可以直接供加刪除數(shù)據(jù)等,可以直接供ObjectDataSource使用。使用。添加強類型的添加強類型的DataSet方法是在解決方案中選擇方法是在解決方案中選擇“添加新項添加新項”,在提供的,在提供的模板中選擇模板中選擇“數(shù)據(jù)集數(shù)據(jù)

45、集”。5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件打開數(shù)據(jù)集,在工具箱中拖拽打開數(shù)據(jù)集,在工具箱中拖拽TableAdaptor,當(dāng)項目無數(shù)據(jù)庫連接時,當(dāng)項目無數(shù)據(jù)庫連接時,會提示創(chuàng)建數(shù)據(jù)庫連接會提示創(chuàng)建數(shù)據(jù)庫連接5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件單擊查詢生成器生成查詢。單擊查詢生成器生成查詢。5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件5.3 ASP.NET數(shù)據(jù)源控件數(shù)據(jù)源控件生成方法。生成方法。通過上面的操作,通過上面的操作,VS2010已經(jīng)自動幫我們生成強類型的數(shù)據(jù)已經(jīng)自動幫我們生成強類型的數(shù)據(jù)表,一些相關(guān)事件以及表,一些相關(guān)事件以及TableAdapter,并且給相應(yīng)的方法標(biāo)注了,并

46、且給相應(yīng)的方法標(biāo)注了DataObjectMethodAttribute,我們可以直接在,我們可以直接在ObjectDataSource中使用這中使用這些方法。些方法。5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5.4.1GridView控件控件GridView是一個顯示表格數(shù)據(jù)的控件,它也是是一個顯示表格數(shù)據(jù)的控件,它也是ASP.NET服務(wù)器控件中功能服務(wù)器控件中功能最強大、最實用的一個控件。最強大、最實用的一個控件。GridView顯示一個二維表格式數(shù)據(jù),每列顯示一個二維表格式數(shù)據(jù),每列表示一個字段,每行表示一條記錄。表示一個字段,每行表示一條記錄。GridView控件支持下面的功能:控件

47、支持下面的功能:l綁定至數(shù)據(jù)源控件,如綁定至數(shù)據(jù)源控件,如SqlDataSourse、ObjectDataSourse。l內(nèi)置的排序功能。內(nèi)置的排序功能。l內(nèi)置了更新和刪除記錄功能。內(nèi)置了更新和刪除記錄功能。l內(nèi)置了數(shù)據(jù)分頁功能。內(nèi)置了數(shù)據(jù)分頁功能。l內(nèi)置了行選擇功能。內(nèi)置了行選擇功能。l提供以編程方式訪問提供以編程方式訪問GridView對象模型以動態(tài)設(shè)置屬性、處理事對象模型以動態(tài)設(shè)置屬性、處理事件等。件等。l可以指定多個鍵字段??梢灾付ǘ鄠€鍵字段。l用于超鏈接列的多個數(shù)據(jù)字段。用于超鏈接列的多個數(shù)據(jù)字段。l可以通過主題和樣式進行自定義外觀。可以通過主題和樣式進行自定義外觀。5.4 ASP.

48、NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件1GridView控件的常用屬性、方法和事件控件的常用屬性、方法和事件5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件方方 法法描描 述述CreateRow在 GridView 控件中創(chuàng)建DataBind將數(shù)據(jù)源綁定到 GridView 控件DeleteRow從數(shù)據(jù)源中刪除位于指定索引位置的記錄FindControl搜索當(dāng)前的命名容器使用指定的服務(wù)器控件GetType獲取當(dāng)前實例的 TypeHasControls確定服務(wù)器控件是否包含任何子控件SelectRow選擇要在 GridView 控件中編輯的行Sort根據(jù)指定的

49、排序表達式和方向?qū)?GridView 控件進行排序UpdateRow使用行的字段值更新位于指定行索引位置的記錄5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 3. 定制定制GridView控件的列控件的列 GridView可以讓開發(fā)人員輕松地定義列樣式、列的顯示格式等。可以讓開發(fā)人員輕松地定義列樣式、列的顯示格式等。GridView控件的每一列都是一個控件的每一列都是一個DataControlField類,類,GridView從該類中派從該類中派生了多個子類,讓生了多個子類,讓GridView控件列的呈

50、現(xiàn)方式更具有選擇性。表控件列的呈現(xiàn)方式更具有選擇性。表5-16列出列出了了GridView控件可用的列類型。默認情況下控件可用的列類型。默認情況下GridView控件將更具源的數(shù)據(jù)控件將更具源的數(shù)據(jù)類型來自動設(shè)定自動,但是開發(fā)人員可以通過設(shè)置這些列的屬性,從而對類型來自動設(shè)定自動,但是開發(fā)人員可以通過設(shè)置這些列的屬性,從而對這些列進行更精確的控制。這些列進行更精確的控制。5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件 GridView控件的列類型控件的列類型列字段類型列字段類型描描 述述BoundField顯示數(shù)據(jù)源中某個字段的值。 這是 GridView 控件的默認列類型ButtonFiel

51、d為 GridView 控件中的每個項顯示一個命令按鈕。 這使您可以創(chuàng)建一列自定義按鈕控件,如“添加”按鈕或“移除”按鈕CheckBoxField為 GridView 控件中的每一項顯示一個復(fù)選框。 此列字段類型通常用于顯示具有布爾值的字段CommandField顯示用來執(zhí)行選擇、編輯或刪除操作的預(yù)定義命令按鈕HyperLinkField將數(shù)據(jù)源中某個字段的值顯示為超鏈接。 此列字段類型使您可以將另一個字段綁定到超鏈接的 URLImageField為 GridView 控件中的每一項顯示一個圖像TemplateField根據(jù)指定的模板為 GridView 控件中的每一項顯示用戶定義的內(nèi)容。 此

52、列字段類型使您可以創(chuàng)建自定義的列字段5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件BoundField是默認的列類型,該列將數(shù)據(jù)庫中的自動顯示為純文本。默認是默認的列類型,該列將數(shù)據(jù)庫中的自動顯示為純文本。默認情況下,情況下,VS2010將為數(shù)據(jù)源中的列生成這種字段類型,將為數(shù)據(jù)源中的列生成這種字段類型,VS2010提供了一個提供了一個可視化的列編輯器,大大簡化了開發(fā)人員創(chuàng)建列的工作。對于大多數(shù)可視化的列編輯器,大大簡化了開發(fā)人員創(chuàng)建列的工作。對于大多數(shù)GridView控件的應(yīng)用,只需要使用該字段編輯器就可以完成大多數(shù)工作??丶膽?yīng)用,只需要使用該字段編輯器就可以完成大多數(shù)工作。5.4 ASP

53、.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件BoundField字段的常用屬性描述字段的常用屬性描述屬屬 性性描描 述述ApplyFormatInEditMode獲取或設(shè)置一 DataFormatString 屬性指定的格式字符串是否的值會應(yīng)用于字段值DataField獲取或設(shè)置數(shù)據(jù)字段的名稱綁定到 BoundField 對象DataFormatString獲取或設(shè)置為字段的值的顯示格式的字符串Control對數(shù)據(jù)綁定控件 DataControlField 關(guān)聯(lián)的對象HeaderText 、FooterText獲取或設(shè)置在數(shù)據(jù)綁定控件的標(biāo)頭或列尾中顯示的文本ReadOnly獲取或設(shè)置一個值可以修改字段的值

54、編輯器狀態(tài)InsertVisible獲取一 DataControlField 對象是否的值是可見的,其父數(shù)據(jù)綁定控件處于插入模式時SortExpression獲取或設(shè)置數(shù)據(jù)源控件用于對數(shù)據(jù)進行排序的排序表達式HeaderImageUrl獲取或設(shè)置在數(shù)據(jù)控件字段的標(biāo)題項顯示的圖像的 URLControlStyle、FooterStyle、HeaderStyle、ItemStyle用于設(shè)置列的呈現(xiàn)樣式5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件4使用模板列使用模板列有些情況下,默認的列并不能滿足顯示的要求,此時可以考慮使用模板列。有些情況下,默認的列并不能滿足顯示的要求,此時可以考慮使用模板列。

55、模板列讓開發(fā)人員有機會去處理列的顯示細節(jié),解決預(yù)定義的列不能提供模板列讓開發(fā)人員有機會去處理列的顯示細節(jié),解決預(yù)定義的列不能提供的功能。的功能。GridView控件使用控件使用TemplateField來創(chuàng)建自定義的模板列,當(dāng)用戶來創(chuàng)建自定義的模板列,當(dāng)用戶在在GridView控件中使用模板列時,需要根據(jù)不同的控件中使用模板列時,需要根據(jù)不同的GridView位置來編輯不位置來編輯不同的模板列。比如想自定義同的模板列。比如想自定義GridView控件的表頭,可以編輯控件的表頭,可以編輯HeadTemplate模板,對于每一行可以編輯模板,對于每一行可以編輯ItemTemplate模板。模板。5

56、.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件GridView控件的模板列控件的模板列模模 板板描描 述述AlternatingItemTemplate指定該目錄為 TemplateField 對象的交替項顯示EditItemTemplate指定該目錄為項目顯示在 TemplateField 對象的編輯模式FooterTemplate指定的內(nèi)容。 TemplateField 對象的頁腳部分顯示HeaderTemplate指定的內(nèi)容。 TemplateField 對象的標(biāo)題部分顯示InsertItemTemplate在插入模式指定該目錄為一個項顯示在 TemplateField 對象。 此模板由

57、DetailsView 控件僅支持ItemTemplate指定該目錄為 TemplateField 對象的項5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件ASP.NET中數(shù)據(jù)綁定分為雙向綁定和單項綁定兩種。在控件的中數(shù)據(jù)綁定分為雙向綁定和單項綁定兩種。在控件的DataBinding屬性中,提供了一個屬性中,提供了一個“雙向數(shù)據(jù)綁定雙向數(shù)據(jù)綁定”復(fù)選框,選定該復(fù)選框,綁定表達式復(fù)選框,選定該復(fù)選框,綁定表達式使用的是使用的是Bind(字段名),如果取消選擇的話,則會變成(字段名),如果取消選擇的話,則會變成Eval(字段名(字段名)。)。單項數(shù)據(jù)綁定使用單項數(shù)據(jù)綁定使用Eval方法,它只提供對數(shù)

58、據(jù)源中數(shù)據(jù)進行顯示。方法,它只提供對數(shù)據(jù)源中數(shù)據(jù)進行顯示。Eval方法是方法是Page類的一個受保護的方法,類的一個受保護的方法,Page.Eval在幕后調(diào)用靜態(tài)的在幕后調(diào)用靜態(tài)的DataBinder.Eval方法方法。雙向數(shù)據(jù)綁定使用雙向數(shù)據(jù)綁定使用Bind方法,它能自動提取模板列的方法,它能自動提取模板列的UI中的輸入中的輸入值,傳遞回數(shù)據(jù)源。因此使用雙向數(shù)據(jù)綁定能進行更新、修改操作值,傳遞回數(shù)據(jù)源。因此使用雙向數(shù)據(jù)綁定能進行更新、修改操作。5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5. GridView控件分頁綁定數(shù)據(jù)控件分頁綁定數(shù)據(jù)GridView控件有一個內(nèi)置分頁功能,可支持基本

59、的分頁功能。在啟用其分控件有一個內(nèi)置分頁功能,可支持基本的分頁功能。在啟用其分頁機制前需要設(shè)置頁機制前需要設(shè)置AllowPaging和和PageSize屬性。屬性。AllowPaging決定是否啟用決定是否啟用分頁功能,分頁功能,PageSize決定分頁時顯示幾條數(shù)據(jù)決定分頁時顯示幾條數(shù)據(jù)。5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件6. 以編程方式實現(xiàn)選中、編輯和刪除以編程方式實現(xiàn)選中、編輯和刪除GridView數(shù)據(jù)項數(shù)據(jù)項在在GridView控件的按鈕中包括控件的按鈕中包括“編輯、更新、取消編輯、更新、取消”的按鈕,這的按鈕,這3個按鈕分別個按鈕分別觸發(fā)觸發(fā)GridView控件的控件的R

60、owEditing、RowUpdating、RowCanceling事件,從而事件,從而完成對指定項的編輯、更新和取消操作功能。完成對指定項的編輯、更新和取消操作功能。5.4 ASP.NET數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件5.4.2 DataList控件控件1DataList控件概述控件概述DataList控件可以使用模板與定義樣式來顯示數(shù)據(jù),并進行數(shù)據(jù)的選擇、刪控件可以使用模板與定義樣式來顯示數(shù)據(jù),并進行數(shù)據(jù)的選擇、刪除以及編輯。除以及編輯。DataList最大的特點就是一定要通過模板來定義數(shù)據(jù)的顯示格最大的特點就是一定要通過模板來定義數(shù)據(jù)的顯示格式。如果想設(shè)計出美觀的界面,就需要花費一番心思。正因

溫馨提示

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

評論

0/150

提交評論