我的代码如下:
CListView::OnInitialUpdate();
CDaoRecordset* prset=GetRecordSet();
if(prset != NULL)
{
    //prset->MoveFirst();

m_pImageList=new CImageList();
    m_pImageList->Create(IDB_IMAGELIST,16,1,RGB(0,0,0));
GetListCtrl().SetImageList(m_pImageList,LVSIL_SMALL);
DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | /*LVS_EX_SUBITEMIMAGES |*/
LVS_EX_HEADERDRAGDROP | LVS_EX_TRACKSELECT;
GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LPARAM(dwExStyle));
LV_COLUMN lvColumn;
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 120;
for(int i=0;i<prset->GetFieldCount();i++)
{
CDaoFieldInfo m_fieldinfo;
prset->GetFieldInfo(i, m_fieldinfo);//get field name
int len = m_fieldinfo.m_strName.GetLength();
CString temp = m_fieldinfo.m_strName;
TCHAR* szBuffer = new TCHAR[len + 1];
strcpy(szBuffer, temp.GetBuffer(len));
temp.ReleaseBuffer();
lvColumn.pszText = szBuffer;
GetListCtrl().InsertColumn(i, &lvColumn);//insert column
delete szBuffer; }
long count=GetRecordcount();                            

GetListCtrl().SendMessage(LVM_SETITEMCOUNT, (WPARAM)count, (LPARAM)LVSICF_NOINVALIDATEALL);
}
为什么我的程序只显示标题头????
请高手给我具体的做一下
请不要再说什么“只有标题头”之类的话了

解决方案 »

  1.   

    InsertColumn函数是插入标题头的函数
    InsertItem函数才是添加列表的
    int i = m_ctrlList.InsertItem(-1,"第一列");
    m_ctrlList.SetItemText(i, 1, "第二列");//这样分别设置几列的值
      

  2.   

    你这个问题已经问了很多次了.
    你的程序中只用InsertColumn加入了标题头.
    for(int i=0;i<prset->GetFieldCount();i++)
    { ...
    }
    GetFiledCount是得到是表的字段名
    这个循环只是在List加入了标题头。
    你的程序中就没有读记录和加记录到List的代码。
      

  3.   

    GetFiledCount是得到是表的字段个数
      

  4.   

    my code use ODBC:
    int CEmployeeListView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    if (CListView::OnCreate(lpCreateStruct) == -1)
    return -1;
    LONG lStyle;
    CListCtrl &list=GetListCtrl();
    lStyle=GetWindowLong(list.GetSafeHwnd(), GWL_STYLE);
    lStyle&=~(LVS_TYPEMASK);
    lStyle|=LVS_REPORT ; SetWindowLong(list.GetSafeHwnd(), GWL_STYLE, lStyle);
    list.SetExtendedStyle(LVS_EX_FULLROWSELECT );
    /////////////////////////////////////////////////
    list.InsertColumn(0,"编号",LVCFMT_LEFT,68);
    list.InsertColumn(1,"姓名",LVCFMT_LEFT,68);
    list.InsertColumn(2,"上班时间",LVCFMT_LEFT,68);
    list.InsertColumn(3,"考评", LVCFMT_LEFT,68);
    list.InsertColumn(4,"下班时间",LVCFMT_LEFT,68);
    list.InsertColumn(5,"考评", LVCFMT_LEFT,68);
    return 0;
    }void CEmployeeListView::AddDataIntoList()
    {
    CListCtrl &list=GetListCtrl();
    SYSTEMTIME current;
    GetLocalTime(&current);
    CString CurrTime,EmployeeName;
    CurrTime.Format("%02d:%02d:%02d",current.wHour,current.wMinute,current.wSecond);
    //检索员工数据库,如果和输入值相同,则添加进列表
    while(!m_pSet->IsEOF())
    {
    CString EmployeeNum;
    int zero=0;
    {
    m_pSet->GetFieldValue(zero,EmployeeNum);
    m_pSet->GetFieldValue(1,EmployeeName);
    }
    int num=list.GetItemCount();
    if(EmployeeNum==m_EmployeeNum)
    {
    m_EmployeeName=EmployeeName;
    m_numArray.Add(EmployeeNum);
    LVITEM lvItem;
    int nItem;
    lvItem.mask=LVIF_TEXT;
    lvItem.iItem=num;
    lvItem.iSubItem=0;
    lvItem.pszText="";
    nItem=list.InsertItem(&lvItem);
    list.SetItemText(nItem,0,EmployeeNum);
    list.SetItemText(nItem,1,EmployeeName);
    if(current.wHour<=12)
    {
    list.SetItemText(nItem,2,CurrTime);
    CString strlate=IsLate();
    list.SetItemText(nItem,3,strlate);
    }
    else
    {
    list.SetItemText(nItem,4,CurrTime);
    CString strlate=IsLate();
    list.SetItemText(nItem,5,strlate);
    }
    }
    m_pSet->MoveNext();
    }
    m_pSet->MoveFirst();
    }
      

  5.   

    GetFiledCount是得到是表的字段个数