版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第6章ASP.NET數(shù)據(jù)庫編程
在前面的章節(jié)中提到了實際開發(fā)需要用到數(shù)據(jù)庫,數(shù)據(jù)庫在任何應(yīng)用程序開發(fā)中都非常重要。數(shù)據(jù)庫通常被用來存儲用戶信息、新聞內(nèi)容等數(shù)據(jù),也是查詢、搜索的基礎(chǔ)條件。從本章開始,將介紹ASP.NET的數(shù)據(jù)庫編程開發(fā),現(xiàn)今大多數(shù)Web應(yīng)用程序都基于數(shù)據(jù)庫,如電子商務(wù)、網(wǎng)絡(luò)選課、校友錄等。數(shù)據(jù)庫具有強大管理與存儲數(shù)據(jù)的能力,ADO.NET是一個中間的數(shù)據(jù)訪問層,ASP.NET通過ADO.NET來操作數(shù)據(jù)庫。章節(jié)內(nèi)容6.1ADO.NET的數(shù)據(jù)訪問6.2數(shù)據(jù)源控件6.3數(shù)據(jù)綁定控件6.4LINQ
6.1ADO.NET的數(shù)據(jù)訪問ADO.NET是.NETFramework中的一系列類庫,它使開發(fā)人員更加方便地在開發(fā)過程中使用和操作數(shù)據(jù)。在ADO.NET中,大量復(fù)雜數(shù)據(jù)操作的代碼被封裝起來,所以開發(fā)人員在ASP.NET應(yīng)用程序開發(fā)中,只需要編寫少量的代碼即可處理大量的操作。6.1.1ADO.NET基礎(chǔ)ADO.NET中常用的對象有以下幾種。Connection對象:數(shù)據(jù)庫連接對象,建立與物理數(shù)據(jù)庫的連接。Transaction對象:數(shù)據(jù)庫事務(wù)對象,與事務(wù)處理相關(guān)的類。DataAdapter對象:一個中間對象,一方面從數(shù)據(jù)庫中獲取數(shù)據(jù)并填充到DataSet對象中,另一方面用來將DataSet中的更改數(shù)據(jù)更新到數(shù)據(jù)庫中,該對象介于連接對象與非連接對象之間,因此可以看作是一個適配器對象。Command對象:數(shù)據(jù)命令對象,ADO.NET中使用這個對象向數(shù)據(jù)庫發(fā)送查詢、更新、刪除、修改操作的SQL語句。Parameter對象:參數(shù)對象,為Command對象中的SQL語句提供參數(shù)。DataReader對象:數(shù)據(jù)讀取器對象,提供只讀前向的游標,用于快速讀取數(shù)據(jù)。6.1.2連接數(shù)據(jù)庫ADO.NET通過ADOConnection連接到數(shù)據(jù)庫,與ADO的Connection對象相似的是,ADOConnection同樣包括Open和Close方法。Open表示打開數(shù)據(jù)庫連接,Close表示關(guān)閉數(shù)據(jù)庫連接。在每次打開數(shù)據(jù)庫連接后,都需要關(guān)閉數(shù)據(jù)庫連接。6.1.2連接數(shù)據(jù)庫建立連接ADO.NET3.5提供了SqlConnectionStringBuilder對象,使用該對象可以以屬性的方式構(gòu)建連接字符串,這不僅增加了使用連接字符串的安全性,而且讓構(gòu)建連接字符串更加方便。此外使用SqlConnectionStringBuilder還可以利用VS2008強大的IntelliSense特性。連接字串格式如下。server='服務(wù)器地址';database='數(shù)據(jù)庫名稱';uid='數(shù)據(jù)庫用戶名';pwd='數(shù)據(jù)庫密碼'; 示例代碼如下。stringconnString;//聲明連接字串connString=“server='(local)';database='Forum';uid='sa';pwd='123654789'";6.1.2連接數(shù)據(jù)庫使用SqlConnectionStringBuilder構(gòu)建連接字符串的代碼如下。stringconnString;//聲明連接字串connString="server='(local)';database='Forum';uid='sa';pwd='123654789'";//設(shè)置連接字串SqlConnectionStringBuilderbuilder=newSqlConnectionStringBuilder(connString);數(shù)據(jù)庫連接在使用完畢后應(yīng)該盡早地被釋放,SqlConnection類提供了Close方法,用于關(guān)閉一個連接。6.1.2連接數(shù)據(jù)庫在web.config配置文件中保存連接字符串。在web.config中統(tǒng)一配置網(wǎng)站數(shù)據(jù)庫連接字符串,這樣整個網(wǎng)站項目中需要用到連接字符串時,只需要使用ConfigurationManager類中的ConnectionStrings屬性來調(diào)用即可。下面是在web.config中配置連接字符串的代碼。<configuration><connectionStrings> <addname="networkcn"connectionString="server='(local)';database='advertise';uid='sa';pwd='123654789'"/></connectionStrings></configuration>6.1.2連接數(shù)據(jù)庫在程序中調(diào)用數(shù)據(jù)庫連接字符串的代碼如下。 privatestaticreadonlystringConnString=ConfigurationManager.ConnectionStrings ["networkcn"].ConnectionString;6.1.3與數(shù)據(jù)庫交互整個數(shù)據(jù)庫操作的過程可以分為3個步驟:第一,創(chuàng)建數(shù)據(jù)庫連接;第二,執(zhí)行數(shù)據(jù)操作命令;第三,關(guān)閉數(shù)據(jù)庫。實現(xiàn)這個3個過程的完整步驟如下。(1)創(chuàng)建一個連接對象。(2)使用對象的Open方法打開連接。(3)創(chuàng)建一個封裝SQL命令的對象。(4)調(diào)用執(zhí)行命令的對象。(5)執(zhí)行數(shù)據(jù)庫操作。(6)執(zhí)行完畢,釋放連接。6.1.3與數(shù)據(jù)庫交互6.1.3與數(shù)據(jù)庫交互——Command執(zhí)行對象
Command對象可以使用數(shù)據(jù)命令直接與數(shù)據(jù)源進行通信。例如,當需要執(zhí)行一條插入語句,或者刪除數(shù)據(jù)庫中的某條數(shù)據(jù)時,就需要使用Command對象。Command對象的屬性包括了數(shù)據(jù)庫在執(zhí)行某個語句的所有必要的信息,這些信息如下。Name:Command的程序化名稱。Connection:對Connection對象的引用。CommandType:指定是使用SQL語句還是存儲過程,默認情況下是SQL語句。CommandTest:命令對象包含的SQL語句或存儲過程名。Parameters:命令對象的參數(shù)。6.1.3與數(shù)據(jù)庫交互——Command執(zhí)行對象
通常情況下,Command對象用于數(shù)據(jù)的操作,如執(zhí)行數(shù)據(jù)的插入和刪除,也可以執(zhí)行數(shù)據(jù)庫結(jié)構(gòu)的更改,包括表和數(shù)據(jù)庫。stringconnString;//聲明連接字串connString="server='(local)';database='Forum';uid='sa';pwd='123654789'";SqlConnectionconn=newSqlConnection(connString);//新建SQL連接conn.Open();//打開數(shù)據(jù)庫連接SqlCommandcmd=newSqlCommand("insertintotbClassvalues(className)",conn); //建立Command對象6.1.3與數(shù)據(jù)庫交互——Command執(zhí)行對象
通常創(chuàng)建一個Command對象的步驟如下。聲明一個有效的Connection對象。聲明一個有效的Command對象.為Command對象指定需要操作的SQL語句字符串和關(guān)聯(lián)的Connection對象的實例。打開Connection對象。執(zhí)行Command對象的各種方法進行數(shù)據(jù)庫操作。關(guān)閉Connection對象。6.1.3與數(shù)據(jù)庫交互——Command執(zhí)行對象
在SqlCommand類中定義用來執(zhí)行SQL語句的方法如下。ExecuteNonQuery():執(zhí)行SQL語句并返回所影響的行,常用于執(zhí)行一個不返回任何結(jié)果的操作。在上面實例中就是使用的這個方法向數(shù)據(jù)庫中插入一條新的記錄。ExecuteReader():執(zhí)行查詢語句并返回SqlDataReader,常用于返回記錄集的操作,如select*fromtbClass;。ExecuteScalar():執(zhí)行查詢并返回結(jié)果的第一行第一列,常用于返回一個值的操作,如selectcount(*)fromtbClass;。6.1.3與數(shù)據(jù)庫交互——DataReader對象DataReader對象也是在線數(shù)據(jù)操作對象,它讀取數(shù)據(jù)庫的方式為“只讀只進”。所謂只讀,就是通過DataReader對象只能進行數(shù)據(jù)的讀取操作;只進,是指讀取記錄的游標只會不斷地前進,不能在讀取完第4條數(shù)據(jù)之后,再返回去讀取第3條記錄。DataReader對象具有以下特點??焖俚臄?shù)據(jù)庫訪問。只進和只讀,當對數(shù)據(jù)庫的操作沒有太大的要求時,可以使用DataReader顯示數(shù)據(jù)。這些數(shù)據(jù)可以與單個list-bound控件綁定,也可以填充List接口。當不需要復(fù)雜的數(shù)據(jù)庫處理時,DataReader能夠較快地完成數(shù)據(jù)顯示。DataAdapter對象能夠自動地打開和關(guān)閉連接,而DataReader對象需要用戶手動管理連接。DataReader對象和DataAdapter對象很相似,都可以從SQL語句和一個連接中初始化。6.1.3與數(shù)據(jù)庫交互——DataReader對象創(chuàng)建DataReader對象必須經(jīng)過以下幾個步驟。(1)創(chuàng)建和打開數(shù)據(jù)庫連接。(2)創(chuàng)建一個Command對象。(3)從Command對象中創(chuàng)建DataReader對象。(4)調(diào)用ExecuteReader對象。DataReader對象的Read方法可以判斷DataReader對象中的數(shù)據(jù)是否還有下一行,并將游標下移到下一行。通過Read方法可以判斷DataReader對象中的數(shù)據(jù)是否讀完。
while(dr.Read()){Response.Write(dr["title"].ToString()+"<hr/>");}6.1.4管理內(nèi)存數(shù)據(jù)ASP.NET3.5從數(shù)據(jù)庫中讀取出數(shù)據(jù)主要是存儲在內(nèi)存中,合理管理內(nèi)存中的數(shù)據(jù),對于整體發(fā)揮網(wǎng)站項目性能具有重要的作用。本節(jié)主要介紹如何使用DataSet管理內(nèi)存中的數(shù)據(jù)。DataSet對象是ADO.NET中非連接類型最主要的類。該類就像是一個小型的內(nèi)存數(shù)據(jù)庫系統(tǒng),在該類中具有數(shù)據(jù)表、數(shù)據(jù)列、數(shù)據(jù)行、約束、表間關(guān)系等特性,DataSet對象為異構(gòu)的數(shù)據(jù)源之間提供了一致的編程模型。6.1.4管理內(nèi)存數(shù)據(jù)數(shù)據(jù)集數(shù)據(jù)集(DataSet)是斷開連接的數(shù)據(jù)容器,DataSet的數(shù)據(jù)組織方式與數(shù)據(jù)庫極其相似,實際在大多數(shù)情況下,DataSet中的數(shù)據(jù)都是數(shù)據(jù)庫中數(shù)據(jù)的副本。但是,DataSet還可以從XML、CSV文件中導(dǎo)入記錄,這為開發(fā)人員提供了一致的編程模型。DataSet中包含DataTable對象、數(shù)據(jù)列(DataColumn對象)、數(shù)據(jù)行(DataRow對象)、視圖(DataView對象)、約束(Constraint對象)、關(guān)系(DataRelation對象)。6.1.4管理內(nèi)存數(shù)據(jù)使用DataTable實現(xiàn)內(nèi)存表DataSet包含一個DataTableCollection的集合,一個DataSet中可以包含多個DataTable對象,每個DataTable類似于數(shù)據(jù)庫中的表,同樣包括字段(DataColumn)和記錄(DataRow)的集合。除此之外,還包含約束(Constraint對象)集合。約束通常用于維持列中值的一致性和完整性。另外,DataTable對象還存在著關(guān)系集合(DataRelation),類似于數(shù)據(jù)庫表之間的關(guān)系。開發(fā)人員可以將DataTable想象成一個表,并且可以通過編程的方式創(chuàng)建一個DataTable表。DataTableTable=newDataTable("Forum");//創(chuàng)建一個DataTable對象Table.CaseSensitive=false; //設(shè)置不區(qū)分大小寫Table.MinimumCapacity=100; //設(shè)置DataTable初始大小Table.TableName="tbClass"; //設(shè)置DataTable的名稱6.1.4管理內(nèi)存數(shù)據(jù)創(chuàng)建一個內(nèi)存表有以下3個步驟(1)創(chuàng)建一個DataTable對象實例。(2)為該DataTable對象添加架構(gòu)信息,類似于定義數(shù)據(jù)表的字段,可以為字符設(shè)置屬性,定義約束等操作。(3)向DataTable中添加行數(shù)據(jù)。6.1.4管理內(nèi)存數(shù)據(jù)DataAdapter適配器對象在創(chuàng)建了數(shù)據(jù)庫連接后,需要對數(shù)據(jù)集DataSet進行填充,在這里就需要使用DataAdapter對象。在沒有數(shù)據(jù)源時,DataSet對象對保存在Web窗體可訪問的本地數(shù)據(jù)庫是非常實用的,這樣降低了應(yīng)用程序和數(shù)據(jù)庫之間的通信次數(shù)。然而DataSet必須要與一個或多個數(shù)據(jù)源進行交互,DataAdapter就提供了DataSet對象和數(shù)據(jù)源之間的連接。6.2數(shù)據(jù)源控件數(shù)據(jù)源控件用來配置數(shù)據(jù)源,當數(shù)據(jù)控件綁定數(shù)據(jù)源控件時,就能夠通過數(shù)據(jù)源控件來獲取數(shù)據(jù)源中的數(shù)據(jù)并顯示,而無需通過程序?qū)崿F(xiàn)數(shù)據(jù)源代碼的編寫。6.2.1SQL數(shù)據(jù)源控件SQL數(shù)據(jù)源控件(SqlDataSource)是提供ASP.NET3.5連接到SQL數(shù)據(jù)庫的數(shù)據(jù)源控件,并且SqlDataSource能夠與SQLServer、Access、Oledb、Odbc以及Oracle等數(shù)據(jù)庫進行交互。SqlDataSource控件提供數(shù)據(jù)的檢索、插入、更新、刪除、排序等功能,并且SqlDataSource在提供這些功能的同時,開發(fā)人員不需要手動編寫任何代碼。6.2.1SQL數(shù)據(jù)源控件當SqlDataSource控件添加到頁面后,會生成ASP.NET標簽,示例代碼如下。
<asp:SqlDataSourceID="SqlDataSource1"runat="server"></asp:SqlDataSource>6.2.2綁定到對象控件ASP.NET數(shù)據(jù)源控件,多數(shù)都是在兩層應(yīng)用程序?qū)哟谓Y(jié)構(gòu)中使用。ASP.NET充當?shù)氖潜硎緦樱ňW(wǎng)頁)角色,而數(shù)據(jù)源控件充當?shù)氖菙?shù)據(jù)層(數(shù)據(jù)庫/XML文件等)角色。但是,常用的應(yīng)用程序設(shè)計原則是將表示層與業(yè)務(wù)邏輯相分離,而將業(yè)務(wù)邏輯封裝在業(yè)務(wù)對象中。這些業(yè)務(wù)對象在表示層和數(shù)據(jù)層之間形成一層,從而生成一種三層應(yīng)用程序結(jié)構(gòu)。綁定到對象(ObjectDataSource)控件通過提供一種將相關(guān)頁上的數(shù)據(jù)控件綁定到中間層業(yè)務(wù)對象的方法,為三層結(jié)構(gòu)提供支持。在不使用擴展代碼的情況下,ObjectDataSource使用中間層業(yè)務(wù)對象以聲明方式對數(shù)據(jù)執(zhí)行選擇、插入、更新、刪除、分頁、排序、緩存和篩選操作。6.2.2綁定到對象控件SqlDataSource用于兩層模型中,頁面直接訪問數(shù)據(jù)庫。ObjectDataSource用于三層模型中,也就是頁面通過中間業(yè)務(wù)對象訪問數(shù)據(jù)庫的。ObjectDataSource的業(yè)務(wù)對象是可以用檢索或更新數(shù)據(jù)的業(yè)務(wù)對象,如Bin或App_Code目錄中定義的對象。6.2.2綁定到對象控件ObjectDataSource控件對象模型類似于SqlDataSource控件。ObjectDataSource公開一個TypeName屬性,該屬性指定要實例化來執(zhí)行數(shù)據(jù)操作的對象類型,也就是類的名稱。與SqlDataSource的命令屬性類似,同樣ObjectDataSource控件包括4個重要屬性,這4個屬性分別為SelectMethod、UpdateMethod、InsertMethod和DeleteMethod,分別用于指定要執(zhí)行這些數(shù)據(jù)操作關(guān)聯(lián)類型的方法。選擇對象后,就可以配置SelectMethod、UpdateMethod、InsertMethod和DeleteMethod屬性的方法。6.2.3綁定到XML數(shù)據(jù)XML數(shù)據(jù)源控件可以讓數(shù)據(jù)綁定控件輕易地連接到XML數(shù)據(jù)源。首先建立一個名為XMLFile.xml的XML源文件,其代碼如下。<?xmlversion="1.0"encoding="utf-8"?><news><title>新聞標題1</title><time>2008</time><author>guojing</author><content>這是新聞?wù)?lt;/content><title>新聞標題2</title><time>2008</time><author>guojing</author><content>這是新聞?wù)?lt;/content></news>6.2.3綁定到XML數(shù)據(jù)配置XmlDataSource控件數(shù)據(jù)源“配置數(shù)據(jù)源”窗口6.2.3綁定到XML數(shù)據(jù)XmlDataSource控件一般用于只讀的數(shù)據(jù)方案。數(shù)據(jù)綁定控件顯示XML數(shù)據(jù),還可以通過XmlDataSource來編輯XML數(shù)據(jù)。但是當XmlDataSource控件加載時,必須使用DataFile屬性加載,而不能從Data屬性中指定的XML字符串進行加載。6.2.4綁定到站點地圖定義Web.sitemap站點地圖文件。
<?xmlversion="1.0"encoding="utf-8"?><siteMapxmlns="/AspNet/SiteMap-File-1.0"><siteMapNodeurl="default.aspx"title="首頁"description="MyWebSite">
<siteMapNodeurl="~/products/default.aspx"title="產(chǎn)品板塊">
<siteMapNodeurl="~/products/product1.aspx"title="產(chǎn)品板塊1"/>
<siteMapNodeurl="~/products/product2.aspx"title="產(chǎn)品板塊2"/></siteMapNode><siteMapNodeurl="~/services/default.aspx"title="服務(wù)板塊">
<siteMapNodeurl="~/services/service1.aspx"title="服務(wù)板塊1"/>
<siteMapNodeurl="~/services/service2.aspx"title="服務(wù)板塊2"/></siteMapNode><siteMapNodeurl="contact.aspx"title="聯(lián)系我們"/></siteMapNode></siteMap>6.2.4綁定到站點地圖定義Web.sitemap站點地圖文件。
<?xmlversion="1.0"encoding="utf-8"?><siteMapxmlns="/AspNet/SiteMap-File-1.0"><siteMapNodeurl="default.aspx"title="首頁"description="MyWebSite">
<siteMapNodeurl="~/products/default.aspx"title="產(chǎn)品板塊">
<siteMapNodeurl="~/products/product1.aspx"title="產(chǎn)品板塊1"/>
<siteMapNodeurl="~/products/product2.aspx"title="產(chǎn)品板塊2"/></siteMapNode><siteMapNodeurl="~/services/default.aspx"title="服務(wù)板塊">
<siteMapNodeurl="~/services/service1.aspx"title="服務(wù)板塊1"/>
<siteMapNodeurl="~/services/service2.aspx"title="服務(wù)板塊2"/></siteMapNode><siteMapNodeurl="contact.aspx"title="聯(lián)系我們"/></siteMapNode></siteMap>6.2.4綁定到站點地圖數(shù)據(jù)綁定控件會自動讀取Web.sitmap文件并生成導(dǎo)航。當使用了SiteMapDataSource控件后,數(shù)據(jù)綁定控件就能夠綁定SiteMapDataSource控件并自動讀取相應(yīng)的值并生成導(dǎo)航。當需要對導(dǎo)航進行修改時,只需要修改Web.sitemap即可,這樣方便了站點導(dǎo)航功能的使用和維護。6.3數(shù)據(jù)綁定控件在ASP.NET3.5中所有的數(shù)據(jù)庫綁定控件都是從BaseDataBoundControl這個抽象類派生的,這個抽象類定義了以下兩個重要屬性和一個重要方法。DataSource屬性:指定數(shù)據(jù)綁定控件的數(shù)據(jù)來源,顯示時程序?qū)倪@個數(shù)據(jù)源中獲取數(shù)據(jù)并顯示。DataSourceID屬性:指定數(shù)據(jù)綁定控件的數(shù)據(jù)源控件的ID,顯示時程序?qū)鶕?jù)這個ID找到相應(yīng)的數(shù)據(jù)源控件,并利用這個數(shù)據(jù)源控件中指定方法獲取數(shù)據(jù)并顯示。DataBind()方法:當指定了數(shù)據(jù)綁定控件的DataSource屬性或者DataSourceID屬性之后,再調(diào)用DataBind()方法才會顯示綁定的數(shù)據(jù)。并且在使用數(shù)據(jù)源時,會首先嘗試使用DataSourceID屬性標識的數(shù)據(jù)源,如果沒有設(shè)置DataSourceID時才會用到DataSource屬性標識的數(shù)據(jù)源。也就是說DataSource和DataSourceID兩個屬性不能同時使用。6.3.1GridView控件GridView控件的數(shù)據(jù)綁定方式可以有3種形式。第一種先配置數(shù)據(jù)源控件,然后通過“選擇數(shù)據(jù)源”選項來調(diào)用數(shù)據(jù)源控件。第二種直接選擇“選擇數(shù)據(jù)源”,VS2008會使用向?qū)磉M行配置數(shù)據(jù)源。第三種是通過編程的方式綁定數(shù)據(jù)庫。6.3.1GridView控件GridView控件的字段表示類型如下。BoundField(數(shù)據(jù)綁定字段):將DataSource數(shù)據(jù)源的字段數(shù)據(jù)以文本方式顯示。ButtonField(按鈕字段):在數(shù)據(jù)綁定控件中顯示命令按鈕。根據(jù)控件的不同,它可讓您顯示具有自定義按鈕控件(如“添加”或“移除”按鈕)的數(shù)據(jù)行或數(shù)據(jù)列,按下時會引發(fā)RowCommand事件。CommandField(命令字段):顯示含有命令的Button按鈕,包括了Select、Edit、Update、Delete命令按鈕(DetailsView的CommandField才支持Insert命令)。CheckBoxField(CheckBox字段):顯示為CheckBox類型,通常用于布爾值True/False的顯示。HyperLinkField(超鏈接字段):將DataSource數(shù)據(jù)源字段數(shù)據(jù)顯示成HyperLink超級鏈接,并可指定另外的NavigateUrl超鏈接。ImageField(圖像字段):在數(shù)據(jù)綁定控件中顯示圖像字段。TemplateField(模板字段):顯示用戶自定義的模板內(nèi)容。6.3.1GridView控件要想實現(xiàn)GridView控件的分頁功能,首先需要將AllowPaging屬性的值設(shè)置為true,然后可以根據(jù)具體情況設(shè)置PageSize(分頁大?。irstPageText(第一頁)、LastPageText(最后一頁)、NextPageText(下一頁)、PreviousPageText(上一頁)等屬性來設(shè)置分頁的顯示樣式。在方法里面輸入以下代碼。protectedvoidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgse){GridView1.PageIndex=e.NewPageIndex;databind();}6.3.2FormView控件FormView控件與GridView控件一樣是用來綁定數(shù)據(jù)的控件,但是FormView控件只能顯示數(shù)據(jù)庫中一行的數(shù)據(jù),當數(shù)據(jù)超過一條時,就會自動顯示分頁。FormView控件擁有GridView控件的特性。FormView控件支持的模板如下。ItemTemplate:在FormView中呈現(xiàn)一個特殊的記錄。HeaderTemplate:指定一個可選的頁眉行。FooterTemplate:指定一個可選的頁腳行。EmptyDataTemplate:在FormView的DataSource缺少記錄時,EmptyDataTemplate將會代替ItemTemplate來生成控件的標記語言。PagerTemplate:如果FormView啟用了分頁的話,這個模板可以用于自定義分頁的界面。EditItemTemplate/InsertItemTemplate:如果FormView支持編輯或插入功能,那么這兩種模板可以用于自定義相關(guān)的界面。6.3.3DetailsView控件DetailsView控件與FormView控件在很多情況下非常類似,DetailsView控件通常情況下也只能夠顯示一行的數(shù)據(jù),同F(xiàn)ormView,DetailsView控件支持對數(shù)據(jù)源控件中的數(shù)據(jù)進行插入、刪除和更新。但是DetailsView控件與FormView控件不同的是,DetailsView控件不支持ItemTemplate模板,這也就是說,DetailsView控件是以一種表格的形式所呈現(xiàn)的。相比之下,DetailsView控件能夠支持Ajax,因為FormView控件完全由模板驅(qū)動,但是FormView控件對驗證控件的支持較好。而DetailsView控件可以通過選擇是否包括更新、刪除等操作,而無需手動添加相應(yīng)的事件,比FormView控件更加方便。6.3.3DetailsView控件開發(fā)人員還可以配置PagerSettings屬性允許自定義DetailsView控件生成分頁用戶界面的外觀,它將呈現(xiàn)向前和向后導(dǎo)航的方向控件,PagerSettings屬性的常用模式有以下幾種。NextPrevious:以前一個,下一個形式顯示。NextPreviousFirstLast:以前一個,下一個,最前一個,最后一個形式顯示。Numeric:以數(shù)字形式顯示。NumericFirstLast:以數(shù)字,最前一個,最后一個形式顯示。6.3.4Repeater和DataList控件Repeater控件和DataList控件其數(shù)據(jù)綁定意義與GridView類似,可以實現(xiàn)相同的功能,但是它們與GridView控件相比更加靈活,它們支持自定義的HTML代碼,也就是說在GridView控件中,數(shù)據(jù)是通過固定的模板來呈現(xiàn)的,而Repeater控件和DataList控件可以允許開發(fā)人員在其模板中自定義不同的HTML代碼來呈現(xiàn)。6.3.4Repeater和DataList控件Repeater控件Repeater控件能夠通過模板顯示一個數(shù)據(jù)源的內(nèi)容,這些模板非常靈活,開發(fā)人員可以輕松地進行配置,Repeater并非從WebControl派生而來,在它內(nèi)部可以自定義HTML代碼或樣式來編輯模板和控制屬性。在Repeater控件中,可以運用以下5種模板來顯示相應(yīng)的界面信息。AlternatingItemTemplate:指定如何顯示其他選項。ItemTemplate:指定如何顯示選項。HeaderTemplate:指定如何顯示標題。FooterTemplate:指定如何顯示頁腳。SeparatorTemplate:指定如何顯示不同選項之間的分隔符。6.3.4Repeater和DataList控件DataList控件DataList控件的常用樣式屬性如下。AltermatingItemStyle:編寫交替行的樣式。EditItemStyle:正在編輯項的樣式。FooterStyle:列表結(jié)尾處腳注的樣式。HeaderStyle:列表頭部標題的樣式。ItemStyle:單個項的樣式。SelectedItemStyle:選定項的樣式。SeparatorStyle:各項之間分隔符的樣式。6.3.5ListView控件ListView控件支持的模板如下。AlternatingItemTemplate:交替項目模板,用不同的標記顯示交替的項目,便于查看者區(qū)別連續(xù)不斷的項目。EditItemTemplate:編輯項目模板,控制編輯時的項目顯示。EmptyDataTemplate:空數(shù)據(jù)模板,控制ListView數(shù)據(jù)源返回空數(shù)據(jù)時的顯示。EmptyItemTemplate:空項目模板,控制空項目的顯示。GroupSeparatorTemplate:組分隔模板,控制項目組內(nèi)容的顯示。GroupTemplate:組模板,為內(nèi)容指定一個容器對象,如一個表行、div或span組件。InsertItemTemplate:插入項目模板,用戶插入項目時為其指定內(nèi)容。ItemSeparatorTemplate:項目分隔模板,控制項目之間內(nèi)容的顯示。ItemTemplate:項目模板,控制項目內(nèi)容的顯示。LayoutTemplate:布局模板,定義容器對象的根組件,如一個table、div或span組件,它們包裝ItemTemplate或GroupTemplate定義的內(nèi)容。SelectedItemTemplate:已選擇項目模板,指定當前選中項目內(nèi)容的顯示。6.4LINQ每一種數(shù)據(jù)域有它自己的訪問方法。當查詢一個數(shù)據(jù)庫時,你很自然地就用SQL,當你訪問XML數(shù)據(jù)時,很自然地就用DOM或者XQuery。然而現(xiàn)在的數(shù)據(jù)格式越來越多,數(shù)據(jù)庫、XML、數(shù)組、哈希表……每一種都有自己操作數(shù)據(jù)的方式,學起來費事費力。最終的結(jié)果是,在訪問不同的數(shù)據(jù)源時就有了不同的編程模型。于是,就有了LINQ誕生的理由——以一種統(tǒng)一的方式操作各種數(shù)據(jù)源,減少數(shù)據(jù)訪問的復(fù)雜性。LINQ編程語言的一種新特性,能夠?qū)?shù)據(jù)查詢語句集成到編程語言中。目前,LINQ支持的語言有C#和VB。6.4.1LINQ概述LINQ是LanguageIntegratedQuery(語言集成查詢)的簡稱,它是集成在.NET編程語言中的一種特性,這使得查詢表達式可以得到很好的編譯時語法檢查,豐富的元數(shù)據(jù),智能感知等強類型語言的好處。LINQ是VS2008和.NETFramework3.5版中一項突破性的創(chuàng)新,它在對象領(lǐng)域和數(shù)據(jù)領(lǐng)域之間架起了一座橋梁。LINQ支持的不僅有SQLServer數(shù)據(jù)庫,還有XML文檔、ADO.NET數(shù)據(jù)集、.NET集合、文件、字符串等。6.4.1LINQ概述LINQ的基本構(gòu)架6.4.1LINQ概述LINQ包括5個部分,即LINQtoObjects、LINQtoDataSet、LINQtoSQL、LINQtoEntities和LINQtoXML。在.NET開發(fā)中最常用的是LINQtoSQL和LINQtoXML。LINQtoSQL提供了對SQLServer中數(shù)據(jù)庫的訪問和整合功能,同時能夠以對象的形式進行數(shù)據(jù)庫管理,前面已經(jīng)提到,現(xiàn)在的數(shù)據(jù)庫依舊以關(guān)系型數(shù)據(jù)庫為主,在面向?qū)ο箝_發(fā)過程中,很難通過對象的方法描述數(shù)據(jù)庫,而LINQ提供了通過對象的形式對數(shù)據(jù)庫進行描述。6.4.2LINQ語法基礎(chǔ)LINQ查詢語句能夠?qū)?fù)雜的查詢應(yīng)用簡化成一個簡單的查詢語句,LINQ在寫法上和SQL語句十分相似,但是它們還是有一定區(qū)別的,就以查詢論壇表tbBoard和表tbClass中的數(shù)據(jù)來說,SQL查詢語句如下。
select*fromclassName,boardNamewhereclassId=boardClassId//SQL查詢語句
上述代碼是SQL查詢語句,對于LINQ而言,其查詢語句格式如下。
varsql=fromclinlq.tbClassfrombdinlq.tbBoardwherecl.classId==bd.boardClassIdselectcl;LINQ的基本格式如下。
var<變量>=from<項目>in<數(shù)據(jù)源>where<表達式>orderby<表達式>6.4.2LINQ語法基礎(chǔ)from查詢子句from子句是LINQ查詢語句中最基本的子句關(guān)鍵字。與SQL查詢語句不同的是,from關(guān)鍵字必須是LINQ查詢語句的開始。(1)from查詢子句基礎(chǔ):后面跟隨著項目名稱和數(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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛定點洗車服務(wù)合同范本
- 兼職聘用勞動合同
- 北師大版高中數(shù)學(必修3)《算法的基本結(jié)構(gòu)及設(shè)計》教案3篇
- 宇航用步進電機驅(qū)動線路發(fā)展及展望
- 區(qū)塊鏈技術(shù)在公共資源交易檔案管理中的應(yīng)用
- 大學物理課后習題及答案
- 基于Mahony和EKF融合算法的MEMS關(guān)節(jié)姿態(tài)測量系統(tǒng)
- 2025年外研版選修歷史上冊月考試卷含答案
- 健身器材創(chuàng)新技術(shù)與專利分析考核試卷
- 2025年新世紀版高三語文上冊月考試卷
- 全科醫(yī)學的基本原則和人文精神(人衛(wèi)第五版全科醫(yī)學概論)
- 船員健康知識課件
- 《揚州東關(guān)街掠影》課件
- 環(huán)保行業(yè)研究報告
- 物流服務(wù)項目的投標書
- 廣西太陽能資源分析
- 地鐵車站低壓配電及照明系統(tǒng)
- 行業(yè)會計比較(第三版)PPT完整全套教學課件
- 值機業(yè)務(wù)與行李運輸實務(wù)(第3版)高職PPT完整全套教學課件
- 高考英語語法填空專項訓練(含解析)
- 42式太極劍劍譜及動作說明(吳阿敏)
評論
0/150
提交評論