日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS2010环境下MFC使用DataGrid绑定数据源

發布時間:2025/1/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS2010环境下MFC使用DataGrid绑定数据源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果MFC的軟件中 使用DataGrid控件后,在別的電腦上不能運行行,需要拷貝一個 MSDATGRD.ocx 和msstdfmt.dll? 文件在軟件的目錄中,并寫一個批處理文件 reg.dat 文件內容如下 regsvr32 msdatgrd.ocx regsvr32 msstdfmt.dll
詳細介紹如何在MFC中使用DataGrid控件實現數據綁定。

1:新建一個MFC應用程序:DataGridDemo

  

2:選擇基于對話框,然后一直下一步,直到完成。

  

?

3:為了簡單,清除多于的東西。

  

?

4:現在要插入一個DataGrid控件,前提是你已經將控件添加到工具箱了。

  VS2010默認沒有這個控件。添加辦法如下:

  在工具欄空白處右鍵,選中選擇項,彈出一個選擇工具項的對話框,選中“COM組件”選 項卡

  點擊“選擇”按鈕,因為我是win7 64位的系統,所以路徑為SysWOW64,如果為32位請找system32。如下圖:

  

?

5:選擇MSDATGRD.OCX。選擇后,確定。工具箱中應該有了DataGrid控件了。

?

  

6:現在要注冊這個組件。

  這一步非常重要!

  需要下載文件:MSDATGRD.OCX

  下載地址:http://download.csdn.net/detail/shijiufeng/3198530

  注冊方法:命令行? regsvr32.exe C:\Windows\System32\MSDATGRD.OCX

  注意:如果出現"can not initialize data binding“的錯誤,則還需要注冊MSSTDFMT.DLL文件

7:成功注冊后現在就來添加DataGrid控件了。

? ? ?在DataGridDemo界面右鍵選擇:"插入Acitve控件"然后選擇DataGrid,或者直接從工具箱上拖上來。

?

  

8:將DataGrid的ID和Caption的屬性修改為IDC_DATAGRID_TEST ?如圖:

  

?

  9:關鍵的一步:在解決方案上右鍵,添加-類-ActiveX控件中的MFC類

?

  

10:點擊“添加”按鈕后在選擇“文件”找到剛才的控件的位置,這里選擇Column和Columns兩個接口,其它的也可以選擇,但是不要選擇IDataGrid接口:

  因為IDataGrid接口選擇后生成的類CDataGrid繼承的是COleDispatchDriver類,我們需要的是CDataGrid繼承CWnd類。

  至于類CDataGrid的文件CDataGrid.h我們想其它辦法解決。

  

?

11:我們從另外的地方將DataGrid.h、DataGrid.cpp復制到項目中。

? ? ? ?其它 的設置如在DataGridDemoDlg.h : 頭文件中添加引用與代碼

// DataGridDemoDlg.h : 頭文件#include "DataGrid.h"#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")CDataGrid m_dbTest;//數據庫連接與數據集ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;

?

?  在?DataGridDemoDlg.cpp : 實現文件中添加引用與代碼

#include "CColumn.h" #include "CColumns0.h" #include "DataGrid.h"// TODO: 在此添加額外的初始化代碼 //------初始化數據庫------// //AfxOleInit(); m_pConnection.CreateInstance("ADODB.Connection"); //------------------------// try {m_pConnection->ConnectionTimeout = 8;m_pConnection->PutCursorLocation(adUseClient);m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\DataBase\\LoginDemo.accdb;","","",adModeUnknown); } catch(_com_error e) {AfxMessageBox("數據庫連接失敗");return FALSE; } //---------初始化記錄集對象---------------// try {m_pRecordset.CreateInstance("ADODB.Recordset"); //打開記錄集m_pRecordset->Open("SELECT * FROM BALANCE",_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockPessimistic,adCmdText); } catch(_com_error e)///捕捉異常 {CString temp;temp.Format("aaa連接數據庫錯誤信息:%s",e.ErrorMessage());AfxMessageBox(temp);return 0; }m_dbTest.SetRefDataSource(NULL); m_dbTest.SetRefDataSource((LPUNKNOWN)m_pRecordset);m_dbTest.Refresh();//另外要注意如下方法內紅色部分。void CData_Disp2Dlg::DoDataExchange(CDataExchange* pDX) {CDialogEx::DoDataExchange(pDX);DDX_Control(pDX,IDC_DATAGRID_TEST,m_dbTest); }

?

?

最后結果如下:

?

12:可能出錯的地方:

  m_dbTest.SetRefDataSource(NULL);?
  m_dbTest.SetRefDataSource((LPUNKNOWN)m_pRecordset);

  如果用生成的CDataGrid.h,里面的方法為putref_DataSource

  DDX_Control(pDX,IDC_DATAGRID_TEST,m_dbTest); 這句話可能也會報錯,

  因為VS2010生成的類CDataGrid繼承的是COleDispatchDriver類,我們需要的是CDataGrid繼承CWnd類。

所以最好還是用其它地方的DataGrid.h和DataGrid.cpp文件來替換Vs2010生成的。

最后提供這個例子的代碼下載:

在我的下載資源里面:http://download.csdn.net/detail/fddqfddq/4505306

總結

以上是生活随笔為你收集整理的VS2010环境下MFC使用DataGrid绑定数据源的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。