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

时间: 2024-12-27 18:43:26

VS2010环境下MFC使用DataGrid绑定数据源的相关文章

GridView列添加下拉框,绑定数据源并设置默认值

添加下拉框:   注意:默认值只能在界面初始化直接中设置 DataGridViewComboBoxColumn dataGridViewComboBoxColumn = new DataGridViewComboBoxColumn(); dataGridViewComboBoxColumn.Name = "dgvcbcSeatType"; dataGridViewComboBoxColumn.DataPropertyName = "SeatType"; dataGr

libCURL开源库在VS2010环境下编译安装,配置详解

libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 CURL开源库VS2010环境下编译安装,配置详解 一 准备 1.1 CURL官网下载地址:http://curl.haxx.se/download.html 1.2 找到源码包,我这里下载的是7.32.0版:http://curl.haxx.se/download/curl-7.32.0.zip 二 步骤 2.1 打开curl-7.32.0\

vs2010环境下生成dll文件

vs2010环境下生成dll文件 1,新建win32工程,选中DLL项目,如下图:2,分别添加头文件和cpp文件 #ifndef LIB_H#define LIB_Hextern "C" int _declspec(dllexport)add(int x,int y);    // 声明为C编译.链接方式的外部函数#endif #include "stdafx.h"int add(int x,int y){    return x+y;} 3,新建win32控制台工

VS2010环境下用ANSI C创建DLL和使用方法(转)

源:VS2010环境下用ANSI C创建DLL和使用方法 1. 创建DLL工程 1.1 启动VS 2010 1.2 创建一个dll工程. 操作:a.文件->新建->项目->Win32控制台应用程序. b.输入工程名称,这里我们用dll,点击确定按钮. c.点击下一步,在"应用程序设置界面设置"勾选DLL(D)项和空项目,点击完成按钮. d.视图->解决方案资源管理器,右键点击"头文件",添加->新建项,这里咱们用dll.h 右键点击&q

Boost学习总结(一)VS2010环境下编译STLport和Boost

Boost简介 Boost库是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库.1998年,Beman G.Dawes(C++标准委员会成员之一)发起倡议并建立了Boost社区,目的是向C++程序员提供免费的.同行审查.可移植的高质量C++源程序库.Boost涵盖了字符串与文本处理.容器.迭代器.算法.图像处理.模板元编程.并发编程等等,使用Boost,将大大增强了C++的功能和表现力. STLport是什么? STLport是一个完全符合C++98标准的一个免费的C++标准库实现

VS2010环境下Winpcap配置方法 (转)

VS2010 配置Winpcap 新建一个项目,GetDevs.cpp.用来测试.测试代码最后有给出. View->Property Manager Debug|Win32 -> Mircrosoft.Cpp.Win32.user(右键)->Properties 注:此处设置为全局的! q  设置环境目录 VC++ Directiories -> Include Directories和Library Directories中添加路径. 假如将wpdpack放到c盘.则: Incl

Directx11在Vs2010环境下配置教程

工具以及版本: Directx sdk june 2010 Visual studio 2010 配置方法: 1.先安装directxsdk 安装完后,默认会生成一个环境变量DXSDK_DIR,不用管 2.在vs2010中新建win32 application 空项目 3. "配置属性"->"VC++目录" #.添加"$(DXSDK_DIR)Utilities/Bin/x86"(不包括双引号)到 "可执行文件目录": #

VS2010环境下Boost_1_59_0的安装与测试

版本:boost_1_59_0 下载地址:http://sourceforge.net/projects/boost/?source=typ_redirect Boost库是为C++语言标准库提供扩展的一些C++程序库的总称. Boost库由Boost社区组织开发.维护.其目的是为C++程序员提供免费.同行审查的.可移植的程序库.Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能. 非关乎切身利益者不能动也. 素闻其功能强大,但一直没有机会进行尝试,终于最近自己的课题有所涉及,才匆

Directx 在Vs2010环境下配置教程

工具以及版本: Directx sdk june 2010 Visual studio 2010 配置方法: 1.先安装directxsdk 安装完后,默认会生成一个环境变量DXSDK_DIR,不用管 2.在vs2010中新建win32 application 空项目 3. “配置属性”->“VC++目录” #.添加“$(DXSDK_DIR)Utilities/Bin/x86”(不包括双引号)到 “可执行文件目录”: #.添加“$(DXSDK_DIR)Include”(不包括双引号)到 “包含目