什么是ASP.NET DataGrid控件:完全模板化的網格
ASP.NET DataGrid控件呈現一個多列、完全模板化的網格,它是 .NET 框架中所有數據綁定 Web 控件中最通用和最靈活的控件。DataGrid 的用戶界面在某種程度上類似于 Microsoft Excel 工作表。盡管 DataGrid 具有高級的編程接口以及完整的屬性集,但是它只生成包含交錯超級鏈接的 HTML 表,從而提供互操作功能(例如,排序和分頁命令)。
使用 DataGrid 控件,可以創建簡單的數據綁定列(顯示從數據源檢索的數據)、模板化列(允許您設計單元格內容的布局),***但也很重要的是基于命令的列(允許您向網格中添加特定的功能)。
DataGrid 控件很適合報告數據,而且其足夠的靈活性允許您構建復雜且具有專業外觀的數據表,在這些數據表中,可隨意實現諸如分頁和排序之類的功能。然而,其他功能(例如,深化和主/細)只需要較少的工作。在本月的專欄中,我將討論一個無法由該控件本身提供、但是頗受許多人歡迎的功能。因此,讓我們研究一下如何自動生成復雜的報表,在這些表中,必須顯示具有部分合計的匯總行。
ASP.NET DataGrid控件
可通過設置 DataGrid 控件的 DataSource 屬性來將實際數據綁定到該控件的實例。此屬性是一般的 Object 類型,并且支持兩個配置方案。通常用實現 ICollection 接口的數據對象來設置它。通常將使用 DataTable 和 DataView 對象。另一種方法是,用另一個對象類型(例如,data reader 對象)來設置它。不過,在這種情況下,必須打開自定義分頁機制;否則將引發異常。簡單地說,您要么將 DataGrid 綁定到分頁數據源(即用來實現枚舉數的集合對象),要么必須為自己提供分頁。
對于 Web 控件,數據綁定處于啟用狀態,只有在調用 DataBind 方法時,用戶界面才進行刷新。在刷新過程中,該控件會遍歷數據源并將一些行復制到它的 Items 集合中。Items 屬性代表當前顯示頁的內容。如果數據源支持分頁(即,實現 ICollection),則 DataGrid 從 DataSource 選擇適合當前頁的正確行子集。否則,它假設 DataSource 的全部內容都適合當前頁并將它們全部加載到 Items 中。在填充完 Items 之后,就會呈現該控件的用戶界面。
此處有何教訓?DataGrid 控件能夠安全而又一致地顯示的全部內容就是綁定數據源中包含的行。因此,如果您希望插入匯總行,以便按照公共鍵對某些記錄進行分組并顯示部分合計,則必須指出將這些匯總行直接插入數據源的方法。
然而,將匯總行插入數據源是不夠的。實際上,必須能夠區分匯總行和普通行,并用不同的視覺樣式呈現前者。
在將數據附加到該控件之前,確保數據源包含其所需的所有匯總行。接著,掛鉤 ItemCreated 事件,檢測每個匯總行,然后用不同的布局和樣式繪制它們。讓我們看一看如何在 SQL 查詢的不同行之間插入匯總行。我將使用基于 Northwind SQL Server 數據庫的示例應用程序來闡釋我的觀點。該應用程序列出每個客戶已在給定年份發出的所有定單。定單按年份和客戶 ID 進行分組。對于每個客戶,都額外有一行來匯總定單的總數和總額。
以上就介紹了ASP.NET DataGrid控件的基本知識。
【編輯推薦】