自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET中的數(shù)據(jù)源控件

開(kāi)發(fā) 后端
本文介紹ASP.NET中的數(shù)據(jù)源控件,從根本上說(shuō),數(shù)據(jù)源控件就是包裝了特定數(shù)據(jù)源的一些基本函數(shù)的服務(wù)器控件。

在本文中,我將引導(dǎo)您瀏覽ASP.NET 2.0中的主要數(shù)據(jù)源控件

數(shù)據(jù)源組件一覽

從根本上說(shuō),數(shù)據(jù)源控件就是包裝了特定數(shù)據(jù)源(如SQL Server、Microsoft Access或XML文檔)的一些基本函數(shù)的服務(wù)器控件。這些基本函數(shù)包括查詢、插入、更新和刪除。數(shù)據(jù)源控件不具有UI并且不呈現(xiàn)任何標(biāo)記(請(qǐng)注意,有許多控件都不具有UI,然而卻呈現(xiàn)標(biāo)記)??梢杂寐暶鞣绞交蚓幊谭绞綄⑵浣壎ǖ綌?shù)據(jù)控件。通過(guò)數(shù)據(jù)源組件的服務(wù),數(shù)據(jù)綁定控件除了可以從特定數(shù)據(jù)源獲取數(shù)據(jù)以外,還可以插入新記錄或者更新和刪除現(xiàn)有記錄??丶慕涌诳偸窍嗤?,無(wú)論您使用哪種特定的數(shù)據(jù)源(即,無(wú)論是SQL Server數(shù)據(jù)庫(kù)、XML文檔、Microsoft Excel工作表還是站點(diǎn)圖描述)。

數(shù)據(jù)源對(duì)象是自描述性的,并且能夠讓綁定控件了解基礎(chǔ)數(shù)據(jù)源中受支持的功能。這樣,控件就可以方便地基于它所連接的數(shù)據(jù)源的功能來(lái)調(diào)整它自己的用戶界面。例如,網(wǎng)格組件可以僅在基礎(chǔ)數(shù)據(jù)源可編輯時(shí)才顯示Edit列。
數(shù)據(jù)源控件是ASP.NET 2.0數(shù)據(jù)綁定模型中迄今為止最為重要的更改。在ASP.NET 2.0中,數(shù)據(jù)源控件是推薦的用于執(zhí)行數(shù)據(jù)綁定的工具。需要注意的是,數(shù)據(jù)源控件與公開(kāi)IEnumerable接口的對(duì)象一起工作。在數(shù)據(jù)驅(qū)動(dòng)的應(yīng)用程序中,數(shù)據(jù)源控件絕不會(huì)取代DataView和數(shù)組。而且,可以保證向后兼容性。使用數(shù)據(jù)源控件,您現(xiàn)在就具有了一種將數(shù)據(jù)綁定到任何新增和現(xiàn)有數(shù)據(jù)綁定控件的備用方法。數(shù)據(jù)源控件不會(huì)帶來(lái)任何性能問(wèn)題,性能基本與版本1.x中的相同甚至略高一籌。

ASP.NET 2.0向所有數(shù)據(jù)綁定控件中添加了一個(gè)新屬性,以便每個(gè)控件都可以成功地綁定到數(shù)據(jù)源控件。應(yīng)該將這一新屬性—DataSourceId—設(shè)置為在同一頁(yè)面中定義的數(shù)據(jù)源控件的名稱。下面的代碼片段顯示了如何用針對(duì)SQL Server數(shù)據(jù)庫(kù)執(zhí)行的查詢結(jié)果來(lái)填充DataGrid控件:

  1. <asp:SqlDataSource 
  2. runat="server" 
  3. ID="MySource" 
  4. ConnectionString="...;" 
  5. DataSourceMode="DataSet" 
  6. SelectCommand="..." 
  7. /> 
  8. <asp:DataGrid 
  9. runat="server" 
  10. ID="data" 
  11. DataSourceId="MySource" 
  12. /> 

SqlDataSource是公開(kāi)SQL關(guān)系數(shù)據(jù)庫(kù)內(nèi)容的數(shù)據(jù)源控件。(需要注意的是,SqlDataSource不是特定于SQL Server的,但有關(guān)該問(wèn)題的詳細(xì)信息留待稍后討論。)ConnectionString屬性標(biāo)識(shí)源數(shù)據(jù)庫(kù),而SelectCommand屬性被設(shè)置為查詢字符串。正如前面所提到的,您可以使用傳統(tǒng)的DataSource屬性或新的DataSourceId屬性將數(shù)據(jù)傳遞給數(shù)據(jù)綁定控件。請(qǐng)注意,這兩個(gè)屬性是互斥的。如果您同時(shí)設(shè)置這兩個(gè)屬性,將會(huì)引發(fā)異常。

通過(guò)使用數(shù)據(jù)源控件而不是傳統(tǒng)的可枚舉對(duì)象,您會(huì)得到什么呢?首先,您可以在.aspx頁(yè)中使用一個(gè)簡(jiǎn)單的標(biāo)記來(lái)聲明數(shù)據(jù)源。這樣可以實(shí)現(xiàn)數(shù)據(jù)源對(duì)象的自動(dòng)實(shí)例化,并減少為完整設(shè)置該頁(yè)面而需要編寫(xiě)的代碼數(shù)量。您不再需要顯式地操縱如SqlConnection和SqlCommand這樣的對(duì)象。數(shù)據(jù)源減少了對(duì)服務(wù)器數(shù)據(jù)組件(連接、適配器、類型化數(shù)據(jù)集)的依賴性,這是因?yàn)檫@些組件極度依賴于Visual Studio .NET的代碼生成功能。在Visual Studio 2005中,被隔離在don't-change-this-code(不要更改以下代碼)區(qū)域中的自動(dòng)生成的代碼數(shù)量明顯減少。這并不意味著要丟棄設(shè)計(jì)時(shí)功能,而是剛好相反。數(shù)據(jù)源控件促成了控件和數(shù)據(jù)組件之間的直接和隱式綁定。通過(guò)這一體系結(jié)構(gòu),可以開(kāi)發(fā)智能設(shè)計(jì)器,以便動(dòng)態(tài)發(fā)現(xiàn)架構(gòu)和數(shù)據(jù),從而更為準(zhǔn)確地表示數(shù)據(jù)綁定控件的運(yùn)行時(shí)外觀。

至少對(duì)于常見(jiàn)方案(如選擇、排序、分頁(yè)、刪除和基本更新)而言,您可以通過(guò)簡(jiǎn)單地連接和配置一對(duì)控件來(lái)設(shè)置數(shù)據(jù)綁定。圖2顯示了Visual Studio 2005工具箱的Data選項(xiàng)卡。它包含了一些數(shù)據(jù)源控件和數(shù)據(jù)綁定控件—您在許多情況下需要涉及的唯一工具。如果是這種情況,您的頁(yè)面幾乎不需要任何數(shù)據(jù)綁定代碼。盡管如此,由于頁(yè)面需要更為復(fù)雜的數(shù)據(jù)綁定功能,因此需要您添加少量代碼。

通過(guò)數(shù)據(jù)源控件,可以在多種數(shù)據(jù)源中實(shí)現(xiàn)一致的綁定模型。(圖2中的控件只是將在ASP.NET 2.0發(fā)布時(shí)可用的控件的子集。)作為頁(yè)面開(kāi)發(fā)人員,您將使用相同的屬性,而無(wú)論數(shù)據(jù)源是關(guān)系表(無(wú)論是哪種數(shù)據(jù)庫(kù)系統(tǒng))、XML文檔、自定義類還是Excel文件。

您通過(guò)使用數(shù)據(jù)源控件而得到的另一項(xiàng)優(yōu)勢(shì)與數(shù)據(jù)緩存有關(guān)。許多關(guān)于ASP.NET編碼策略和優(yōu)化的書(shū)籍和文章都將緩存數(shù)據(jù)列為構(gòu)建高性能、可伸縮Web應(yīng)用程序的最佳做法。毫無(wú)疑問(wèn),數(shù)據(jù)緩存意味著關(guān)鍵的性能增強(qiáng),即使它不是對(duì)所有頁(yè)面和應(yīng)用程序都有效的魔杖。例如,當(dāng)您管理大量特定于會(huì)話的不穩(wěn)定數(shù)據(jù)時(shí),或者當(dāng)您的要求規(guī)定必須始終顯示新數(shù)據(jù)時(shí),廣泛使用緩存可能不是最佳的方法。請(qǐng)放心,在大多數(shù)情況下,緩存數(shù)據(jù)都是一種改進(jìn)應(yīng)用程序的方法。

數(shù)據(jù)源控件也集成了緩存功能,并且打開(kāi)和關(guān)閉默認(rèn)緩存功能與設(shè)置Boolean屬性一樣容易。緩存對(duì)于數(shù)據(jù)綁定控件而言是透明的,并且數(shù)據(jù)源控件會(huì)管理它的某些方面,如生成緩存密鑰和過(guò)期策略(時(shí)間和密鑰依賴時(shí)間戳)。其他設(shè)置由頁(yè)面開(kāi)發(fā)人員來(lái)決定,包括數(shù)據(jù)在緩存中的生存期。請(qǐng)注意,數(shù)據(jù)源控件可為每個(gè)獨(dú)特的連接字符串、選擇查詢、參數(shù)和緩存設(shè)置組合維護(hù)單獨(dú)的緩存。

還應(yīng)該注意的一個(gè)方面是,某些數(shù)據(jù)源控件(尤其是SqlDataSource)支持?jǐn)?shù)據(jù)緩存過(guò)期,即能夠檢測(cè)數(shù)據(jù)庫(kù)更改并使當(dāng)前緩存的數(shù)據(jù)過(guò)期。稍后,您將會(huì)看到,該功能要求基礎(chǔ)SQL存儲(chǔ)區(qū)提供特定的支持。

使用數(shù)據(jù)源控件而不是傳統(tǒng)的可枚舉對(duì)象顯然有許多優(yōu)點(diǎn),下面讓我們考察一下它的某些缺點(diǎn)。正如曾經(jīng)提到的那樣,在ASP.NET 2.0中,每個(gè)數(shù)據(jù)綁定控件都支持雙重API以便進(jìn)行數(shù)據(jù)綁定。這些API彼此幾乎完全隔離,基本上沒(méi)有共同點(diǎn)。乍看起來(lái),似乎數(shù)據(jù)源控件支持無(wú)代碼綁定,并且只需通過(guò)指向和單擊操作就可以完成可視化編程。勿庸置疑,您無(wú)需編寫(xiě)任何代碼就可以創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)的頁(yè)面。但是,這并不意味著數(shù)據(jù)綁定控件不允許您掛鉤內(nèi)部事件。新的體系結(jié)構(gòu)具有更高的自動(dòng)化程度,但它保留了ASP.NET 1.x中使用的顯式數(shù)據(jù)綁定模型的所有方面。

總而言之,這兩種模型之間的主要區(qū)別在于:當(dāng)執(zhí)行數(shù)據(jù)訪問(wèn)時(shí),數(shù)據(jù)源控件將充當(dāng)代理。如果活動(dòng)的數(shù)據(jù)源對(duì)象對(duì)于您的應(yīng)用程序至關(guān)重要,請(qǐng)考慮為每個(gè)受支持的數(shù)據(jù)操作激發(fā)一對(duì)操作前和操作后事件(如Deleting/Deleted事件)。這會(huì)給予您與ASP.NET 1.x中完全相同的數(shù)據(jù)流控制權(quán),但這次是通過(guò)簡(jiǎn)單得多且更為緊湊的語(yǔ)法實(shí)現(xiàn)的。

最后,請(qǐng)記住數(shù)據(jù)源控件只是一組類。因此,您可以對(duì)它們進(jìn)行完全的控制,并以編程方式實(shí)例化和操縱它們。這樣做的時(shí)候,您將數(shù)據(jù)源控件用作在原始 ADO.NET類之上工作的更為抽象的API。在某種程度上,數(shù)據(jù)源控件代表著Data Application塊的發(fā)展,后者是為.NET Framework 1.x引入的API,目的是實(shí)現(xiàn)常見(jiàn)的ADO.NET最佳做法,并且減少您需要編寫(xiě)的代碼。

【編輯推薦】

  1. ASP.NET的DataList和Repeater控件
  2. 淺析ASP.NET的IIS映射
  3. 概述ASP.NET狀態(tài)類型
  4. 淺談ASP.NET和Web服務(wù)器
  5. ASP.NET的EnableViewState屬性
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-07-23 14:43:24

數(shù)據(jù)源控件ASP.NET 2.0

2009-08-07 16:18:08

ASP.NET2.0數(shù)

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-20 13:32:24

ScriptManagASP.NET

2009-07-20 13:54:31

ScriptManagASP.NET AJA

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-07-27 13:52:36

Panel控件ASP.NET

2009-07-27 13:20:19

HTML Map控件ASP.NET

2009-07-23 16:44:51

AdRotator控件ASP.NET

2009-07-27 14:50:24

ChartAreas控ASP.NET 3.5

2009-01-08 10:20:56

AutoCompletAjaxASP.NET

2009-07-30 12:42:19

html控件和web控

2009-07-27 15:59:34

ASP.NET虛擬主機(jī)

2009-07-24 17:15:52

SiteMapData

2009-08-04 15:20:59

ASP.NET數(shù)據(jù)驗(yàn)證數(shù)據(jù)驗(yàn)證控件

2009-08-07 15:34:15

ASP.NET數(shù)據(jù)綁定

2009-08-04 11:29:14

HTML代碼ASP.NET控件

2009-07-24 15:35:00

ASP.NET Gri

2009-08-04 10:43:59

ASP.NET控件開(kāi)發(fā)

2009-08-19 13:44:00

ASP.NET Lis
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)