缺少的和未經測試的功能
因為DataGridVIEw基控件包含眾多方法、事件和屬性,它們完全被OutlookGrid繼承,我沒有努力用OutlookGrid的實現來測試它們全部。這意味著:一旦您開始為其它超出本文敘述的功能特性而使用OutlookGrid,您將很有可能遇到bug或功能缺失。因為我已遇到其中的一些(問題),我將在下面列出我所知道的問題:
很不幸,OutlookGrid不支持嵌套分組。這就是下一步要做的。
改變網格的顯示風格可能導致分組不能被100%正確地繪出。
通常,Group(分組)的文本顏色被設置為黑色並且不能改變,您將需要改變OutlookGridRow類中的Paint()方法。
我沒有用VirtualMode(虛模式)測試網格。(譯注:VirtualMode屬性在 .Net Framework 2.0 版中是新增的。虛擬模式是為使用大型數據存儲區而設計的。當 VirtualMode 屬性為 true 時,可以創建一個包含大量行和列的 DataGridView,然後處理 CellValueNeeded 事件來填充單元格。虛擬模式要求實現基礎數據緩存,以便基於用戶的操作來處理 DataGridVIEw 單元格的填充、編輯和刪除。詳見MSDN。)說實話,我不知道那個概念是如何工作的,因此我懷疑:一旦您開啟了VirtualMode(譯注:即將其設置為true)數據項還能被正確顯示。
綁定數據源不是直接綁定到DataGridVIEw基控件。因此,數據綁定只為顯示數據項工作。然而,一旦您編輯網格中的數據項,數據源將不會被更新。您將不得不自己動手實現更新。
這也意味著網格中的新數據項將不會自動被添加到數據源。這也將不得不用手工實現。
為Group的row重寫了缺省行,不是所有普通行觸發的事件分組的行都能觸發。比如,分組行重寫OnDoubleClick事件,以自動折疊或展開。不改變代碼該行為是不能被觸發的。
毫無疑問這裡還有一些其它問題,請向我報告它們,那麼我和其它開發者都將可以從中獲益。也許,我會投入更多時間開發這個控件的更多功能。
設計和可擴展性
在這個部分,我要描述這個控件如何實現的更多細節,特別面向可能要在該控件上做一些編碼的開發人員讀者。我嘗試用VS2005中某些東西弄成類似一個的UML圖,但是好吧…這個圖將必須做出來。
OutlookGrid