我使用ADO和DataGrid控件做数据库工程。
但是我不想使用DataGrid的数据源关联,希望通过程序代码的形式添加数据。
因为我的数据库中的某些字段需要处理后填充在不同的单元格中。
不知道怎样才能实现。
TrueDbGrid好像需要注册,所以没有采用。
大家提提意见!

解决方案 »

  1.   

    ////////////////////////////////////////////////////////////////////////
    // set datasource of CDataGrid dynamically

    void CDgDlg::OnOK() 
    { //notes : call AfxOleInit in CXXApp::InitInstance()
    // I also add a line in stdafx.h 
    //#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")
       try
       {
          _ConnectionPtr pConn("ADODB.Connection");
          _RecordsetPtr  pRst("ADODB.Recordset");
          pConn->Open("Provider=sqloledb;Data Source=Dell1;"
             "Initial Catalog=testdb;User Id=sa;Password=;",
             "", "", adConnectUnspecified);
          pRst->Open(
             "table1",
             _variant_t((IDispatch *) pConn, true),
             adOpenStatic,
             adLockReadOnly,
             adCmdTable);
      //CDataGrid m_grid; is a member of CDgDlg.
    m_grid.SetRefDataSource(pRst.Detach());
       }
       catch (_com_error &e)
       {
      char mybuf[10240];
          wsprintf(mybuf,"Description = '%s'\n", (char*) e.Description());
      AfxMessageBox(mybuf);
       }
    }
      

  2.   

    http://codeguru.earthweb.com/mfc_database/unbound_dbgrid.shtml
    Using DBGrid in unbound mode
      

  3.   

    这篇文章我看过了
    它使用的DAO
    不知道有没有ADO的
      

  4.   

    DBGrid 
    和DataGrid可以互相换用吗?
      

  5.   

    这个问题已经出现多次了,masterz的方法是可行的,关键是m_DataGrid.SetRefSource((LPUNKNOWN)m_pRecordset);注意控件不要和数据源关联,可以参考下面一个例子:http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/001/943/msdncompositedoc.xml
      

  6.   

    http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/001/943/msdncompositedoc.xml怎么不能下载演示程序呀!
      

  7.   

    m_DataGrid.SetRefSource((LPUNKNOWN)m_pRecordset);可以改为这样吗:
    m_DataGrid.SetRefSource((LPDISPATCH)m_pRecordset);