Asp.Net就业课堂之模板控件
模板控件
ASP.NET 提供了三個控件,使得在 ASP.NET Web 頁面中顯示數(shù)據(jù)絕對比傳統(tǒng) ASP 所需的迭代方式簡單得多。 這三個控件是 DataGrid、DataList 和 Repeater,以后我將稱之為模板控件或數(shù)據(jù) Web 控件。
DataGrid 使用簡單以及它具有允許數(shù)據(jù)排序、分頁和編輯的功能。
在 ASP.NET Web 頁面中顯示數(shù)據(jù)時,很多開發(fā)人員都選擇他們最熟悉的數(shù)據(jù) Web 控件,通常是 DataGrid。 但是這樣的盲目決定不夠明智,因為根本沒有通用的“最好的”數(shù)據(jù) Web 控件。 決定為給定的 Web 頁使用哪個數(shù)據(jù) Web 控件時,應該先就以下各種問題自己考慮一下,以確定哪個控件最適合手邊的任務。 您想允許用戶對數(shù)據(jù)進行排序嗎? 需要把數(shù)據(jù)用非 HTML
的格式顯示嗎? 頁面會被大量訪問嗎,因而性能是一個關鍵的問題嗎?
因為 DataGrid 能允許最終用戶排序、分頁和編輯它的數(shù)據(jù),所以這三個數(shù)據(jù) Web 控件中 DataGrid Web 控件提供了最好的功能集。 因為使用 DataGrid 時只需要把它添加到 Web 頁面中并寫幾行代碼,所以 DataGrid 也是最簡單易用的數(shù)據(jù) Web 控件。 但是,容易使用和強大的功能是要付出代價的,如性能的代價: DataGrid 是三個數(shù)據(jù) Web 控件中效率最低的,特別是當把它放置在 Web 窗體中時。
通過使用模板,DataList 對顯示的數(shù)據(jù)外觀提供了比 DataGrid 更多的控制。 但是,使用模板通常比使用 DataGrid 的列類型需要更多的開發(fā)時間 DataList 還支持數(shù)據(jù)的內(nèi)聯(lián)編輯,但是實現(xiàn)起來需要的工作量比 DataGrid 多。 遺憾的是,在 DataList 中提供分頁和排序支持不是一件簡單的事。 DataList 比 DataGrid 提供了更好的性能,從而彌補了這些缺少的內(nèi)置功能。
最后,Repeater 控件允許對呈現(xiàn)的 HTML 標記進行完整和全面的控制。 對于 Repeater,生成的唯一 HTML 是模板中數(shù)據(jù)綁定語句的值和模板中指定的 HTML 標記,而不會生成象 DataGrid 和 DataList 那樣的“額外”HTML。 由于要求開發(fā)人員指定完整生成的 HTML 標記,所以通常 Repeater 需要的開發(fā)時間最長。 而且,Repeater 不提供內(nèi)置編輯、排序或分頁支持。 但是,Repeater 的性能確實是這三個數(shù)據(jù) Web 控件中最好的。 它的性能可與 DataList 相比,但明顯比 DataGrid 好。
1.什么是模板控件呢?
答:模板是一組 HTML 元素和控件,它們構成控件特定部分的布局,由 HTML和嵌入的服務器控件組成。 當控件在 ASP.NET 網(wǎng)頁中運行時,控件基礎結構呈現(xiàn)模板的內(nèi)容,而不是控件的默認 HTML。其實說白了它們就相當于我們在vb.net中常用來顯示數(shù)據(jù)的DataGridView控件2.**那么我們?yōu)槭裁匆褂媚0蹇丶?#xff1f;**我說是為了方便,這樣可能大家還不能認可我的解答,下面我來說一下不使用模板時有多麻煩大家就知道啦。Response.Write()這個大家熟悉吧,那么我們想一下要是通過這個方法將數(shù)據(jù)庫中的內(nèi)容通過一個表格的形式顯示出來怎樣做呢?我們需要輸出一個〈table〉標簽,然后開始循環(huán)。在循環(huán)中,每輸出一條記錄,需要先輸出一個〈tr〉標簽以及若干對〈td〉標簽和〈/tr〉標簽。最后,以一個〈/table〉標簽結尾。這樣是不是很麻煩呢?ASP.NET幫我們準備了三個Web服務器控件,可以很輕松的將數(shù)據(jù)庫中的數(shù)據(jù)顯示出來。接下來我會通過對比找到它們的相同點和不同點。解析:
1.雖然它們都可以通過模板顯示數(shù)據(jù),但是DataList和Reperter必須使用模板,而DataGrid還允許 通過 TemplateColumn而只使用模板來顯示一列;2.數(shù)據(jù)源屬性有好幾種,我們熟悉的有DataSet,sqlDataReader,數(shù)組等;? 3.至于前面我們說的通過表格顯示數(shù)據(jù)還需要一個循環(huán),這里就不用那么麻煩了,DataBind() 方法就幫我們解決啦,它通過遍歷一個特定的DataSource中的記錄,并對其中的每條記錄建立一個條目并對應數(shù)據(jù)控件的Item集。數(shù)據(jù)控件中的每個條目將成為一個類的實例。這個類因數(shù)據(jù)控件的不同就有所區(qū)別啦。例如:DataGrid中的 條目是DataGridItem類的一個實例,Reperter中的條目則是RepeaterItem類的一個實例
? 4.下面我們從某些角度通過三個方面對這三個控件進行比較
a.從性能看:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KN49IdVc-1604047980582)(D:\zyg\web\chapter09\assets\image-20201030161946209.png)]
表現(xiàn)在:最明顯的由DataGrid所生成的ViewState將會相當龐大,特別是在DataGrid含有較多的行時。b.從可用性看:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vmDoSjwC-1604047980586)(D:\zyg\web\chapter09\assets\image-20201030162035728.png)]
表現(xiàn)在:1.DataList在定制數(shù)據(jù)輸出樣式方面最為靈活通過設定RepeatColumn屬性,你可以設 置在一行中顯示多少條記錄,更進一步,你甚至可以指定DatList的內(nèi)容不顯示在表格中,而〈span〉標簽中,這可以通過設定RepearLayout屬性來實現(xiàn) ;2.DataGrid通過設置AllowSorting屬性true,并加入少量代碼,就具備了按不同字段序 的功能,分頁以及單條記錄編輯的功能也能過設定屬性來解決,但它始終只能是 HTML表格,這是很大的缺陷了,死板;3.Repeater在格式化設定上的欠缺直接反應到開發(fā)時間的延長,其在內(nèi)建功能(分頁,排序及編輯)上的支持也就顯得不足了c.從開發(fā)時間看:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Stot4oi8-1604047980589)(D:\zyg\web\chapter09\assets\image-20201030162021515.png)]
表現(xiàn)在:
1.實現(xiàn)DataList中的分頁、排序功能時需呀通過巧妙的編程加以實現(xiàn),這就需要耗費一些開發(fā)時間;
2.DataGrid通過設置屬性就可以實現(xiàn)分頁、排序功能;
3.Repeater在格式化設定上的欠缺直接反應到開發(fā)時間的延長
**5.那么這三種控件分別在什么時候最容易被使用呢?
分頁、排序功能;
3.Repeater在格式化設定上的欠缺直接反應到開發(fā)時間的延長
**5.那么這三種控件分別在什么時候最容易被使用呢?
? 如果需要用戶對數(shù)據(jù)記錄進行排序或編輯或更新,刪除時使用DataGrid;如果用戶要求制定出很特別的數(shù)據(jù)輸出樣式則選擇DataList;如果用戶對于如何顯示數(shù)據(jù)無所謂的話,完全可以放心的使用Repeater
總結
以上是生活随笔為你收集整理的Asp.Net就业课堂之模板控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机考研:计算机组成原理考点分析
- 下一篇: java中用jdom 如何创建xml文档