up,详细一点行吗?

解决方案 »

  1.   

    最简单,最快捷的方法是把mdi程序的视图从CListView派生,在其中插入从数据库中读出的数据(截自我的一个程序):
    1。设置视图风格,使其有网格:
    void CDinnerView::OnInitialUpdate()
    {
    CListView::OnInitialUpdate();

    CListCtrl &ctl=GetListCtrl();
    ctl.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL);
    ctl.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
      。。
    }2.在视图区中显示数据:
    //在视图中显示就餐日志
    void CDinnerView::DisplayDinnerLog()
    {
    EraseList();  //擦去上次的输出 GetListCtrl().InsertColumn(0,"    ",LVCFMT_LEFT,20);
    GetListCtrl().InsertColumn(1,"就餐日期        ",LVCFMT_LEFT,200);
    GetListCtrl().InsertColumn(2,"就餐者姓名        ",LVCFMT_LEFT,200);
    GetListCtrl().InsertColumn(3,"餐后权值        ",LVCFMT_LEFT,200); _variant_t vDate,vName,vWeight; CMainFrame *pmain = (CMainFrame*) AfxGetMainWnd(); try{
    pmain->m_pRecordset.CreateInstance("ADODB.Recordset"); pmain->m_pRecordset->Open("SELECT * FROM DinnerLog",_variant_t((IDispatch*)pmain->m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    pmain->m_pRecordset->MoveFirst();
    int nRow = 0;
    CString strWeight;
    while ( !pmain->m_pRecordset->adoEOF )
    {
    GetListCtrl().InsertItem(nRow,"※"); vDate = pmain->m_pRecordset->GetCollect("Date");
    GetListCtrl().SetItemText(nRow,1,(LPCTSTR)(_bstr_t)vDate); vName = pmain->m_pRecordset->GetCollect("Name");
    GetListCtrl().SetItemText(nRow,2,(LPCTSTR)(_bstr_t)vName); vWeight = pmain->m_pRecordset->GetCollect("Weight");
    strWeight.Format("%6.2f",vWeight.dblVal);
    GetListCtrl().SetItemText(nRow,3,strWeight); pmain->m_pRecordset->MoveNext();
    nRow++;
    } pmain->m_pRecordset->Close(); }
    catch(_com_error&e)
    {
    MessageBox(e.Description());
    }
    UpdateWindow();
    }3。
    //删除视图中的所有信息,包括表头
    void CDinnerView::EraseList()
    {
    CListCtrl& ctlList = GetListCtrl();
    ctlList.DeleteAllItems();
    while(ctlList.DeleteColumn(0));
    UpdateWindow();
    }