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

DataGrid Web控件運(yùn)作機(jī)制探秘

開(kāi)發(fā) 后端
DataGrid Web控件是ASP.NET中一個(gè)十分常用,也是功能最豐富的控件之一。本文介紹了DataGrid Web控件的工作原理以及一些特點(diǎn)。

DataGrid Web控件是三個(gè)ASP.NET數(shù)據(jù)Web控件中功能最多的。正如前文所述,DataGrid Web控件從WebControl類(lèi)中誕生,因此可以指定自己想要的樣式。但是在自定義控件生成的實(shí)際 HTML 標(biāo)記時(shí),它又是最不靈活的。 呈現(xiàn)的 HTML 標(biāo)記中的這種不靈活性,是由于 DataGrid 是設(shè)計(jì)用于使用 HTML< table>以表格形式顯示數(shù)據(jù)所造成的。 因此,對(duì)于每一條綁定到 DataGrid 的記錄,都會(huì)創(chuàng)建一個(gè)單獨(dú)的表行( < tr>),對(duì)于要顯示的記錄中的每一個(gè)字段,都會(huì)創(chuàng)建一個(gè)單獨(dú)的表列( < td>)。

DataGrid Web控件提供了許多功能,可極大地提高要顯示的數(shù)據(jù)的可用性。 例如,把 DataGrid 的AllowSorting屬性設(shè)置為 True 并添加一點(diǎn)源代碼,開(kāi)發(fā)人員就可以把一個(gè)普通的 DataGrid 變成一個(gè)其數(shù)據(jù)可以由最終用戶(hù)排序的 DataGrid。 另外,再增加一點(diǎn)工作量,開(kāi)發(fā)人員就能增強(qiáng) DataGrid 的功能以允許數(shù)據(jù)分頁(yè)或數(shù)據(jù)的內(nèi)聯(lián)編輯。 這些功能明顯增強(qiáng)了 DataGrid 的可用性。

除了在可用性方面得分很高,DataGrid 還提供了很短的開(kāi)發(fā)時(shí)間。 要使用 DataGrid 開(kāi)始在 ASP.NET Web 頁(yè)面中顯示數(shù)據(jù),只需要把 DataGrid 添加到 Web 頁(yè)面中并編寫(xiě)兩行必要的代碼: ***行把數(shù)據(jù)綁定到 DataGrid 的DataSource,第二行調(diào)用 DataGrid 的 DataBind()方法。 顯然,隨著添加到 DataGrid 中的功能數(shù)量的增加,開(kāi)發(fā)時(shí)間也增加了,但這只是把開(kāi)發(fā)時(shí)間和其他數(shù)據(jù) Web 控件進(jìn)行比較。 假設(shè)您要允許對(duì) Repeater 顯示的數(shù)據(jù)進(jìn)行排序。 添加這樣的功能是一定可能的,但是與用 DataGrid 完成同樣的操作相比,這需要明顯多很多的時(shí)間和精力。

盡管 DataGrid 具有良好的可用性和開(kāi)發(fā)時(shí)間得分,但是這個(gè)控件有兩個(gè)固有的缺點(diǎn)。 ***,正如前面所談到的,DataGrid 在對(duì)所呈現(xiàn)的 HTML 標(biāo)記進(jìn)行自定義方面的功能很有限。 是的,您可以自定義 DataGrid 的不同行和列的字體、顏色和邊框,但是事實(shí)仍然是,當(dāng) DataGrid 顯示數(shù)據(jù)時(shí),結(jié)果將是一個(gè) HTML< table>, DataSource中的每一條記錄都對(duì)應(yīng)其中一個(gè) < tr>,每一個(gè)字段都對(duì)應(yīng)其中一個(gè) < td>。

具體地說(shuō),DataGrid 中的每一列都是一個(gè)從DataGridColumn類(lèi)中派生的類(lèi)實(shí)例。 有五個(gè)內(nèi)置的 DataGrid 列類(lèi)型:

BoundColumn

ButtonColumn

EditColumn

HyperLinkColumn

TemplateColumn

每一個(gè)列類(lèi)型都提供數(shù)據(jù)或提供某種允許用戶(hù)和 DataGrid 進(jìn)行交互的接口。 例如,BoundColumn 以純文本顯示DataSource字段的值,而 HyperLinkColumn 則會(huì)顯示一個(gè)超級(jí)鏈接,其文字和 URL 部分可能是 DataSource字段。 除了這些內(nèi)置的列類(lèi)型,通過(guò)創(chuàng)建 DataGridColumn類(lèi)的派生類(lèi),還可以創(chuàng)建自定義 DataGrid 列類(lèi)型。

有了這么多的 DataGrid 列類(lèi)型,可能就不理解為什么 DataGrid 呈現(xiàn)的 HTML 標(biāo)記不能進(jìn)行高度自定義了。 要知道,雖然每一個(gè) DataGrid 列類(lèi)型在呈現(xiàn)時(shí)生成不同的 HTML,但是每一列都包含在一組< td>標(biāo)記中,每一行都包含在一組 < tr>標(biāo)記中。 因此,即使可以用 TemplateColumn 自定義每一行的特定列的 HTML 輸出,而 DataGrid 仍然呈現(xiàn)為 HTML < table>,其中每一行使用一個(gè) < tr>,每一列使用一個(gè) < td>。 DataGrid 的這種限制禁止了更多具有創(chuàng)造性的數(shù)據(jù)顯示。 例如,如果要在每一表行中顯示五條記錄,就不能使用 DataGrid,必須使用DataList 或 Repeater。 另外,如果要在除 < table>之外的 HTML 標(biāo)記中顯示數(shù)據(jù),很遺憾,就不能使用 DataGrid 了。

DataGrid 第二個(gè)缺點(diǎn)是它的性能。 DataGrid 是這三個(gè)數(shù)據(jù) Web 控件中性能最差的。 基于這一點(diǎn),由 DataGrid - 特別是具有許多行的 DataGrids - 產(chǎn)生的 ViewState 可能會(huì)非常大。 如果使用 DataGrid 僅僅是為了顯示數(shù)據(jù),則可以關(guān)閉 ViewState,但是,使用 DataGrid 的排序、分頁(yè)或編輯功能時(shí),就不能這樣做了。

為了測(cè)試 DataGrid 的性能,我使用了 Microsoft 的免費(fèi) Web Application Stress Tool (WAST)。 在本文***的“基準(zhǔn)設(shè)置”一節(jié)中列出了精確的測(cè)試條件和 WAST 設(shè)置。 另外,測(cè)試使用的代碼也可在本文***下載。

這個(gè) Web Application Stress Tool 會(huì)向 Web 服務(wù)器發(fā)出一組特定的 URL 請(qǐng)求。 對(duì)于每一項(xiàng)測(cè)試,我都在一分鐘之內(nèi)盡可能快地不斷請(qǐng)求一個(gè) URL。 WAST 報(bào)告了許多性能衡量標(biāo)準(zhǔn);我要關(guān)注的一個(gè)衡量標(biāo)準(zhǔn)是每秒請(qǐng)求數(shù),它表明了 Web 服務(wù)器每秒能執(zhí)行多少次 ASP.NET Web 頁(yè)面。

對(duì)于一個(gè)僅顯示數(shù)據(jù)的簡(jiǎn)單 DataGrid,運(yùn)行了兩個(gè)測(cè)試。 具體地說(shuō),DataGrid 顯示了來(lái)自 Northwinds 數(shù)據(jù)庫(kù)的 Customers 表(Customers 表總共包含 91 條記錄)的四個(gè)字段。 DataGrid 的AutoGenerateColumns屬性設(shè)置為 True。 ***項(xiàng)測(cè)試把 DataGrid 放在一個(gè) Web 窗體( < form runat="server">)中,而第二項(xiàng)測(cè)試則沒(méi)有。 如果在窗體中放置一個(gè)控件而不把它的 EnableViewState屬性顯式設(shè)置為 False,那么該控件則會(huì)用 ViewState 保持它的狀態(tài)。 創(chuàng)建這個(gè) ViewState 項(xiàng)可能是一個(gè)比較費(fèi)時(shí)的過(guò)程,因此減少了可處理的總的每秒請(qǐng)求數(shù),結(jié)果如圖 1 所示。

DataGrid 的每秒請(qǐng)求數(shù) 

圖 1: DataGrid 的每秒請(qǐng)求數(shù)

應(yīng)該說(shuō),DataGrid Web控件的性能并不是很理想。

【編輯推薦】

  1. 小議ASP.NET數(shù)據(jù)Web控件之間的相似性
  2. 從傳統(tǒng)ASP到ASP.NET的轉(zhuǎn)變:了解控件
  3. ASP.NET調(diào)試API之Log4net使用指南
  4. 使用ASP.NET模板生成HTML靜態(tài)頁(yè)面的五種方案
  5. ASP.NET Login控件使用方法及須知
責(zé)任編輯:yangsai 來(lái)源: MSDN
相關(guān)推薦

2009-08-11 14:45:41

C# DataGrid

2009-08-21 15:27:11

C# DataGrid

2009-06-30 09:55:24

Spring運(yùn)作機(jī)制

2023-06-07 15:25:19

Kafka版本日志

2010-08-06 14:13:31

FlexDataGrid分頁(yè)控

2009-07-24 17:22:22

CLR 4.0安全模型

2013-09-09 15:06:03

2009-08-07 17:42:43

ASP.NET Dat

2012-11-07 10:06:05

路由器VPN

2010-08-09 08:48:46

File APIWeb

2021-01-06 09:01:05

類(lèi)javaclass

2009-07-09 18:15:42

JDBC事務(wù)處理

2010-04-16 09:06:18

WPF 4

2018-06-29 14:20:05

2010-03-18 14:11:32

Web交換機(jī)

2010-05-11 16:22:40

2010-09-26 14:08:41

Java垃圾回收

2024-08-12 14:37:38

2020-01-16 09:55:28

STGW流量內(nèi)核

2009-08-03 18:29:31

GridView與Da
點(diǎn)贊
收藏

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