上面我們討論了數據綁定控件的做法,但都未涉及到asp.net2.0中數據源控件的用法,讓用慣了數據源控件的人可能感覺不適應。這次我們就開始討論在asp.net2.0中,我們該如何重新定義數據綁定控件。我一直在想,是先討論數據源控件呢,還是先討論數據綁定控件,兩者是密不可分的。在看下文之前,我想大家應該對asp.net2.0中的數據源控件使用的簡易性非常熟悉了。記得園子的開源項目NBear也為大家提供了數據源控件。個人認為數據源控件和數據綁定控件之間存在著一些約定關系,學習還當從易到難,這裡就假定我們對內置的數據源已經能夠熟練的使用了。這裡就看看如果定義新的數據綁定控件.
一.數據綁定控件新做法
1.第一種為純代碼做法,這種做法比較的煩瑣
2.新做法數據綁定控件與數據源控件結合.不同之處則是不需要寫重復代碼,如
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" AutoGenerateColumns="False">
<Columns>
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName" SortExpression="CompanyName" />
<asp:BoundField DataField="ContactName" HeaderText="ContactName" SortExpression="ContactName" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString2 %>"
SelectCommand="SELECT [CompanyName], [ContactName] FROM [Customers]">
</asp:SqlDataSource>
上面的做法是asp.net2.0裡面新增的,如果你沒有學過asp.net1.1而直接學2.0的話,上面的寫法是非常簡單的,沒有寫一行的代碼.
這樣的做法可能會讓人產生以下幾點看法
(1)初學者認為asp.net真的很簡單,是的很簡單,在簡單的同時你也該意識到數據源控件為你做了重復的工作,快速開發的同時你是否該了解下上面的做法是如何實現的
(2)接觸過.net一段時間的人則會認為DataSource數據源控件只是小兒科,大項目怎麼可以這麼做,對其不放心,還是自己手動寫代碼比較放心-_-.
數據源控件好不好用這裡不必討論,但我想大多數人還是向其靠攏的.
二.數據綁定控件相同機制
數據綁定控件需要數據源
(1)在沒有數據源控件之前,數據綁定控件需要先給DataDource屬性賦值獲取數據源,然後執行DataBind()方法
(2)在數據源控件出現之後,數據綁定控件仍然需要數據源,只不過方式發生了變化,不是通過DataDource屬性直接的獲取,而是間接的通過數據源控件獲取,然後幫你自動執行了DataBind()方法
所以這裡需要注意的是,當設置DataDourceID的時候,不需要再調用DataBind()方法,兩種方法不可同時使用
站在使用者的角度,唯一的變化也就是給我們兩種數據綁定做法的選擇.偷懶的我們當然願意選擇後一種,一切交給數據源控件為我們處理.
三.數據綁定控件新的起點
上篇我們講到過BaseDataList類.1.1中的舊的數據綁定控件從此抽象類中繼承下來,而2.0中新的數據綁定控件,並沒有這麼做,而是從BaseDataBoundControl類重新開始,以此為基礎.net為我們定義了一些比較實用的類.當然在.net2.0中,BaseDataList類也提供了DataDourceID屬性,但微軟也很明確的表示讓我們棄用DataGrid,使用GridView.暫時我們先不去想為什麼,只有了解以後,我們才能去比較
在微軟的MSDN上,早就有篇文章介紹ASP.NET2.0和數據綁定控件:新的角度,新的做法 大家可以看看
這次我們只需要了解兩個基類