tree-like view в ADO+Microsoft datagrid Control

  • Автор темы demask
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

demask

#1
All,

В существующей аппликации на C++/MFC использую АДО+Microsoft DataGrid Control
Потребовалось заюзать tree-like view в гриде (ну типа чтобы можно было использу multiple data sources кликнуть по строке и раскрыть какую-нибудь подтаблицу).

Сейчас у меня грид биндится к ADO recordset'у следующим образом (m_pGrid - это объект wrapper-класса CDataGrid):

Код:
        C_Recordset& rc=m_ctlADODC.GetRecordset();
       m_pGrid.SetRefDataSource(NULL);
       m_pGrid.SetRefDataSource(rc);
       m_pGrid.SetAllowAddNew(FALSE);// allow empty '*'-field at top
       m_pGrid.SetAllowUpdate(FALSE);// disallow editing current records
       m_pGrid.SetAllowDelete(FALSE);// disallow deleting by pressing Del (???)
       m_pGrid.SetAllowArrows(TRUE); // allow arrows keys (???)
       m_pGrid.Refresh(); 
       m_pGrid.UpdateData();

А так соответственно создается ADO data source (m_ctlADODC - это Microsoft ADODC Control, объект wrapper-класса CAdodc):

Код:
    CHAR szTemp[256];
   ::sprintf(szTemp,"SELECT * FROM [%s] ORDER BY [%s]",table_db_dao,field_id);
   m_ctlADODC.SetConnectionString(NULL);
   m_ctlADODC.SetMaxRecords(ADODC_MAX_RECORDS);
   m_ctlADODC.SetCacheSize(ADODC_CACHE_SIZE);
   m_ctlADODC.SetRecordSource(NULL);
   lstrcat(szConnectionString,GetDocument()->GetPathName());
   lstrcat(szConnectionString,_T(";"));
   m_ctlADODC.SetConnectionString(szConnectionString);
   m_ctlADODC.SetRecordSource(_T(szTemp));
   m_ctlADODC.SetCursorType(adOpenDynamic);
   // don't use adLockBatchOptimistic since Grid refresh works badly with it
   m_ctlADODC.SetLockType(adLockOptimistic);
   m_ctlADODC.SetCommandType(adCmdTable);
   // use adCmdTable for table command type
   m_ctlADODC.SetCommandType(adCmdText);
   m_ctlADODC.SetBackColor(ADODC_COLOR);
   m_ctlADODC.SetCaption(_T("Navigation"));
   // if here an error with code DISP_E_EXCEPTION=0x80020009 occurs, check
   // the Connection String for invalid value
   m_ctlADODC.Refresh();


Что нужно сделать чтобы использовать tree-view и multiple data sources? Очень приветствуется пример с использованием грида Microsoft DataGrid Control, т.к. это уже существующая прога и требуется мигимальное кол-во переделок....

Спасибо!
 
Статус
Закрыто для дальнейших ответов.