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

10余年的扶溝網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整扶溝建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“扶溝網(wǎng)站設(shè)計(jì)”,“扶溝網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
DataGrid Web控件提供了許多功能,可極大地提高要顯示的數(shù)據(jù)的可用性。 例如,把 DataGrid 的AllowSorting屬性設(shè)置為 True 并添加一點(diǎn)源代碼,開發(fā)人員就可以把一個普通的 DataGrid 變成一個其數(shù)據(jù)可以由最終用戶排序的 DataGrid。 另外,再增加一點(diǎn)工作量,開發(fā)人員就能增強(qiáng) DataGrid 的功能以允許數(shù)據(jù)分頁或數(shù)據(jù)的內(nèi)聯(lián)編輯。 這些功能明顯增強(qiáng)了 DataGrid 的可用性。
除了在可用性方面得分很高,DataGrid 還提供了很短的開發(fā)時間。 要使用 DataGrid 開始在 ASP.NET Web 頁面中顯示數(shù)據(jù),只需要把 DataGrid 添加到 Web 頁面中并編寫兩行必要的代碼: ***行把數(shù)據(jù)綁定到 DataGrid 的DataSource,第二行調(diào)用 DataGrid 的 DataBind()方法。 顯然,隨著添加到 DataGrid 中的功能數(shù)量的增加,開發(fā)時間也增加了,但這只是把開發(fā)時間和其他數(shù)據(jù) Web 控件進(jìn)行比較。 假設(shè)您要允許對 Repeater 顯示的數(shù)據(jù)進(jìn)行排序。 添加這樣的功能是一定可能的,但是與用 DataGrid 完成同樣的操作相比,這需要明顯多很多的時間和精力。
盡管 DataGrid 具有良好的可用性和開發(fā)時間得分,但是這個控件有兩個固有的缺點(diǎn)。 ***,正如前面所談到的,DataGrid 在對所呈現(xiàn)的 HTML 標(biāo)記進(jìn)行自定義方面的功能很有限。 是的,您可以自定義 DataGrid 的不同行和列的字體、顏色和邊框,但是事實(shí)仍然是,當(dāng) DataGrid 顯示數(shù)據(jù)時,結(jié)果將是一個 HTML< table>, DataSource中的每一條記錄都對應(yīng)其中一個 < tr>,每一個字段都對應(yīng)其中一個 < td>。
具體地說,DataGrid 中的每一列都是一個從DataGridColumn類中派生的類實(shí)例。 有五個內(nèi)置的 DataGrid 列類型:
BoundColumn
ButtonColumn
EditColumn
HyperLinkColumn
TemplateColumn
每一個列類型都提供數(shù)據(jù)或提供某種允許用戶和 DataGrid 進(jìn)行交互的接口。 例如,BoundColumn 以純文本顯示DataSource字段的值,而 HyperLinkColumn 則會顯示一個超級鏈接,其文字和 URL 部分可能是 DataSource字段。 除了這些內(nèi)置的列類型,通過創(chuàng)建 DataGridColumn類的派生類,還可以創(chuàng)建自定義 DataGrid 列類型。
有了這么多的 DataGrid 列類型,可能就不理解為什么 DataGrid 呈現(xiàn)的 HTML 標(biāo)記不能進(jìn)行高度自定義了。 要知道,雖然每一個 DataGrid 列類型在呈現(xiàn)時生成不同的 HTML,但是每一列都包含在一組< td>標(biāo)記中,每一行都包含在一組 < tr>標(biāo)記中。 因此,即使可以用 TemplateColumn 自定義每一行的特定列的 HTML 輸出,而 DataGrid 仍然呈現(xiàn)為 HTML < table>,其中每一行使用一個 < tr>,每一列使用一個 < td>。 DataGrid 的這種限制禁止了更多具有創(chuàng)造性的數(shù)據(jù)顯示。 例如,如果要在每一表行中顯示五條記錄,就不能使用 DataGrid,必須使用DataList 或 Repeater。 另外,如果要在除 < table>之外的 HTML 標(biāo)記中顯示數(shù)據(jù),很遺憾,就不能使用 DataGrid 了。
DataGrid 第二個缺點(diǎn)是它的性能。 DataGrid 是這三個數(shù)據(jù) Web 控件中性能最差的。 基于這一點(diǎn),由 DataGrid - 特別是具有許多行的 DataGrids - 產(chǎn)生的 ViewState 可能會非常大。 如果使用 DataGrid 僅僅是為了顯示數(shù)據(jù),則可以關(guān)閉 ViewState,但是,使用 DataGrid 的排序、分頁或編輯功能時,就不能這樣做了。
為了測試 DataGrid 的性能,我使用了 Microsoft 的免費(fèi) Web Application Stress Tool (WAST)。 在本文***的“基準(zhǔn)設(shè)置”一節(jié)中列出了精確的測試條件和 WAST 設(shè)置。 另外,測試使用的代碼也可在本文***下載。
這個 Web Application Stress Tool 會向 Web 服務(wù)器發(fā)出一組特定的 URL 請求。 對于每一項(xiàng)測試,我都在一分鐘之內(nèi)盡可能快地不斷請求一個 URL。 WAST 報(bào)告了許多性能衡量標(biāo)準(zhǔn);我要關(guān)注的一個衡量標(biāo)準(zhǔn)是每秒請求數(shù),它表明了 Web 服務(wù)器每秒能執(zhí)行多少次 ASP.NET Web 頁面。
對于一個僅顯示數(shù)據(jù)的簡單 DataGrid,運(yùn)行了兩個測試。 具體地說,DataGrid 顯示了來自 Northwinds 數(shù)據(jù)庫的 Customers 表(Customers 表總共包含 91 條記錄)的四個字段。 DataGrid 的AutoGenerateColumns屬性設(shè)置為 True。 ***項(xiàng)測試把 DataGrid 放在一個 Web 窗體( < form runat="server">)中,而第二項(xiàng)測試則沒有。 如果在窗體中放置一個控件而不把它的 EnableViewState屬性顯式設(shè)置為 False,那么該控件則會用 ViewState 保持它的狀態(tài)。 創(chuàng)建這個 ViewState 項(xiàng)可能是一個比較費(fèi)時的過程,因此減少了可處理的總的每秒請求數(shù),結(jié)果如圖 1 所示。
圖 1: DataGrid 的每秒請求數(shù)
應(yīng)該說,DataGrid Web控件的性能并不是很理想。
本文題目:DataGridWeb控件運(yùn)作機(jī)制探秘
文章來源:http://fisionsoft.com.cn/article/ccsogcc.html


咨詢
建站咨詢
