天天看點

asp.net總結之Repeater,DataList和DataGrid

        從項目開始到結束純的用在此項目的時間為半個月的時間,其中将視訊中講到的大例子做了一遍,過程還是很可貴的,在這個視訊中主要學到了HTML控件和WEB控件,知道了使用動态控件和靜态控件的利弊,了解了這兩種控件的差別和聯系,之後我們又深入的結合例子學習很多具體的控件,其實與之前我們接觸的大同小異,還有幾個我們之前沒有接觸過的,給我印象最深的就是那六個用起來很友善也很常見的驗證控件還有那三種資料控件,這裡邊老師也幫我們重溫了ADO.NET的一些知識,學起來還是很熟悉的,總之學習了這部分知識沒有給自己添加多餘的壓力,快樂着學習,這何嘗不是一種很好的狀态呢。

        前面提到的六種驗證控件在學習的過程中我已經有了總結,詳見:                   

        http://http://rong1224017082.blog.163.com/blog/static/186302404201371912931158

        接下來我來分析一下前面提到的那三種模闆控件,它們屬于Web伺服器控件,分别Repeater,DataList和DataGrid

        1.什麼是模闆控件呢?

        答:模闆是一組 HTML 元素和控件,它們構成控件特定部分的布局,由 HTML和嵌入的伺服器控件組成。 當控件在 ASP.NET 網頁中運作時,控件基礎結構呈現模闆的内容,而不是控件的預設 HTML。其實說白了它們就相當于我們在vb.net中常用來顯示資料的DataGridView控件

       2.那麼我們為什麼要使用模闆控件呢?

       我說是為了友善,這樣可能大家還不能認可我的解答,下面我來說一下不使用模闆時有多麻煩大家就知道啦。Response.Write()這個大家熟悉吧,那麼我們想一下要是通過這個方法将資料庫中的内容通過一個表格的形式顯示出來怎樣做呢?我們需要輸出一個〈table〉标簽,然後開始循環。在循環中,每輸出一條記錄,需要先輸出一個〈tr〉标簽以及若幹對〈td〉标簽和〈/tr〉标簽。最後,以一個〈/table〉标簽結尾。這樣是不是很麻煩呢?

        ASP.NET幫我們準備了三個Web伺服器控件,可以很輕松的将資料庫中的資料顯示出來。接下來我會通過對比找到它們的相同點和不同點。進而更加輕松的了解和使用它們

       3.共同點:

asp.net總結之Repeater,DataList和DataGrid

       解析:

        1.雖然它們都可以通過模闆顯示資料,但是DataList和Reperter必須使用模闆,而DataGrid還允許 通過 TemplateColumn而隻使用模闆來顯示一列;

        2.資料源屬性有好幾種,我們熟悉的有DataSet,sqlDataReader,數組等;

        3.至于前面我們說的通過表格顯示資料還需要一個循環,這裡就不用那麼麻煩了,DataBind() 方法就幫我們解決啦,它通過周遊一個特定的DataSource中的記錄,并對其中的每條記錄建立一個條目并對應資料控件的Item集。資料控件中的每個條目将成為一個類的執行個體。這個類因資料控件的不同就有所差別啦。例如:DataGrid中的 條目是DataGridItem類的一個執行個體,Reperter中的條目則是RepeaterItem類的一個執行個體

       4.下面我們從某些角度通過三個方面對這三個控件進行比較

           a.從性能看:

asp.net總結之Repeater,DataList和DataGrid

          表現在:最明顯的由DataGrid所生成的ViewState将會相當龐大,特别是在DataGrid含有較多的行時。

          b.從可用性看:  

asp.net總結之Repeater,DataList和DataGrid

        表現在:

       1.DataList在定制資料輸出樣式方面最為靈活通過設定RepeatColumn屬性,你可以設 置在一行中顯示多少條記錄,更進一步,你甚至可以指定DatList的内容不顯示在表格中,而〈span〉标簽中,這可以通過設定RepearLayout屬性來實作 ;

       2.DataGrid通過設定AllowSorting屬性true,并加入少量代碼,就具備了按不同字段序 的功能,分頁以及單條記錄編輯的功能也能過設定屬性來解決,但它始終隻能是 HTML表格,這是很大的缺陷了,死闆;

       3.Repeater在格式化設定上的欠缺直接反應到開發時間的延長,其在内建功能(分頁,排序及編輯)上的支援也就顯得不足了

        c.從開發時間看:

asp.net總結之Repeater,DataList和DataGrid

         表現在:

         1.實作DataList中的分頁、排序功能時需呀通過巧妙的程式設計加以實作,這就需要耗費一些開發時間;

         2.DataGrid通過設定屬性就可以實作分頁、排序功能;

         3.Repeater在格式化設定上的欠缺直接反應到開發時間的延長

         5.那麼這三種控件分别在什麼時候最容易被使用呢?

         如果需要使用者對資料記錄進行排序或編輯或更新,删除時使用DataGrid;如果使用者要求制定出很特别的資料輸出樣式則選擇DataList;如果使用者對于如何顯示資料無所謂的話,完全可以放心的使用Repeater

       根據自己的需求選擇合适的控件之後,關于具體怎樣實作那就需要大家底下再好好研究研究啦,動手實踐一下比聽好很多呢,同志們加油,下一篇文章我将對前邊提到的HTML控件和WEB控件的差別和聯系做一個總結,希望大家提出寶貴的建議。