今天看到MSDN上的這篇文章,介紹asp.net2.0的新的資料控制項DataView。asp.net1.x的DataGrid在簡單快速顯示資料列表方面很方便,如果考慮介面外觀就不好控制了,仍然需要寫大量的代碼,有時候還出現一些莫名其妙的問題,http://qingyang.cnblogs.com/archive/2006/01/03/310289.html,所以許多時候選擇Repeater,寧願多寫些代碼。文中提到在asp.net2.0中,所有控制項無論有什麼樣的實際實現過程和使用者介面特點,均從同一個基類(BaseDataBoundControl 類)派生。右圖顯示新的類別關係圖。但是除了新加入的GridView和Menu控制項,其他幾個資料清單控制項還是和asp.net1.x一樣的控制項繼承樹。不過Repeater已改為繼承於WebControl,那就是說同時也繼承了WebControl的樣式和屬性,那麼Render的時候是不是會產生一些html的元素呢?文中還提到:GridView 控制項也支援傳統的基於 DataSource 屬性和 DataBind 方法的綁定機制。儘管完全支援這種綁定機制,但是不鼓勵使用這樣的編程實踐方法。.net2.0 架構提供了一個新的資料來源控制項,這個資料來源控制項就是一組.NET Framework 類,它有利於資料存放區和資料繫結控制項之間的雙向繫結,很顯然這個控制項提供了選擇、插入、更新和刪除的主要資料操作功能,說明了這些流程關係。
這個資料來源控制項在資料繫結控制項和資料來源之間形成一個中介層,也公開一個提供基本操作的公用介面IDataSource,對資料來源的操作通過這個控制項的SelectCommand、UpdateCommand、InsertCommand 和 DeleteCommand 屬性結合來完成,GridView 為這些事件定義內部的處理常式。
<asp:SqlDataSource runat="server" ID="MySource"
ConnectionString="SERVER=(local);DATABASE=northwind;Integrated Security=SSPI;"
SelectCommand="SELECT * FROM employees WHERE employeeid > @MinID">
<SelectParameters>
<asp:ControlParameter Name="MinID"
ControlId="EmpID"
PropertyName="Text" />
</SelectParameters>
</asp:SqlDataSource>
但是在複雜的資料操作時仍然需要編寫代碼。同時資料量和訪問量很大的時候效能怎樣?這仍然是個值得關注的問題。
在GridView物件模型裡裡有個很值得體驗的新特性--使用一個基於回調的輕量型機制來進行排序和分頁,通過設定 EnableSortingAndPagingCallbacks 布爾屬性來開啟和關閉此功能。當單擊排序或分頁連結來啟用回調時,GridView 請求排序資料或下一頁,不回傳可視頁面。這裡發生了一個往返過程,但是無頁面重新整理。並且只需通過開啟 AllowPaging 和 AllowSorting 屬性就能啟用自動翻轉排序和分頁功能。這個排序是單頁排序還是整個資料來源排序?這是個很不錯的使用者體驗。在asp.net1.x裡,如果要在DataGrid裡放入RadioButton,CheckBox需要寫大量的代碼,GridView已經實現了這樣的功能,並且改進了HyperLinkField 的Url多參數問題。另外有趣的是ImageField,它通過 ASP.NET 2.0 DynamicImage 控制項顯示來自資料庫和 URL 兩者的映像。而且,在編輯模式下,ImageField 列彈出一個 Browse 按鈕,用於定位要上傳的位於原生新檔案。資料繫結運算式的文法更簡潔,只需調用Page類定義的新的Eval保護方法,並且只需傳入一個資料欄位名的字串參數。從表面上看,這些似乎只是簡化了程式員的工作,這些功能在1.x裡都可以實現,只是需要編寫大量代碼。
asp.net2.0在伺服器控制項上做了大量改進,資料繫結控制項文法更簡單但功能更強大。正如文中所說:理想的情況是,它們應該以很少的單擊操作以及有限的代碼數量提供進階的功能。但是如果是複雜的頁面互動、更複雜的資料操作這些控制項還是不能滿足,需要編寫大量的代碼。
MSDN中文站裡VS2005 Team System with MSDN 的促銷活動搞得如火如荼,但一直沒看到發布簡體中文版的任何訊息。中文版的MSDN要到什麼時候才有啊?期待......