DataGrid 是微軟原生 OLE DB 網格控件,與 VC++/Windows 相容性極佳,升級維護無負擔,讓開發者專注業務邏輯而非控件細節。雖有第三方優秀網格,但原生整合度最高。
CDataGrid (主控件)、CColumns (欄位集合)、CColumn (單一欄位)。CADODatabase m_DBCn;
CADORecordset m_Rs;
CDataGrid m_ctrlDG;
// 開啟資料庫
CString strConn = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=note.mdb");
m_DBCn.Open(strConn);
m_Rs.SetDatabase(&m_DBCn);
m_Rs.Open(_T("SELECT * FROM test;"));
// 一鍵繫結
m_ctrlDG.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset());


CColumns cols = m_ctrlDG.GetColumns(); // 取得欄位集合
COleVariant vtIndex(0); // 第一欄
CColumn col = cols.GetItem(vtIndex); // 取得欄位物件
col.SetWidth(1500); // 設定寬度 (單位: twips, 1/1440 英吋)

col.SetNumberFormat(_T("0.0%")); // 0.1234 → 12.3%


設定欄位 col.SetAllowSizing(TRUE) 並調整 RowHeight,或在資料中內嵌換行符。
ClassWizard 對映 HeadClick 事件,在處理函式中依欄位索引對記錄集重新排序或發動 SQL ORDER BY 重查。具體程式碼請參考原始碼專案 TestGrid。
SetForeColor、SetFontBold、SetAlignment),可直接推測功能。DataGrid 功能遠不止於此,本文拋磚引玉,歡迎同好交流心得。
Email: ChinaITBoy@163.com
本文配套原始碼 (專案名 TestGrid) 可供下載。