当从数据库查询并在list control中显示时,没有显示数据,通过调试发现已经从数据库中获得所查询的记录值,但就是不在listcontrol中显示。问题在于SetItemText()之前没有进行InsertItem(),所以在每次进行SetItemText()应该先InsertItem()一行或多行。代码如下:
CDataBase::Open();
pRecordset=CDataBase::Query(strsql);
int index=0;
CString m_ID,m_name,m_title,m_department;
while(!pRecordset->adoEOF)
{
m_doctorlist.InsertItem(index,_T(""));//先插入一列,然后才设置内容
_variant_t var=pRecordset->GetCollect("医生编号");
if(var.vt!=VT_NULL)
m_ID=(LPCSTR)_bstr_t(var);
//AfxMessageBox(m_ID);
var=pRecordset->GetCollect("医生姓名");
if(var.vt!=VT_NULL)
m_name=(LPCSTR)_bstr_t(var);
//AfxMessageBox(m_name);
var=pRecordset->GetCollect("职称");
if(var.vt!=VT_NULL)
m_title=(LPCSTR)_bstr_t(var);
var=pRecordset->GetCollect("科室");
if(var.vt!=VT_NULL)
m_department=(LPCSTR)_bstr_t(var);
m_doctorlist.SetItemText(index,0,m_ID);//index为行,0为列
m_doctorlist.SetItemText(index,1,m_name);
m_doctorlist.SetItemText(index,2,m_title);
m_doctorlist.SetItemText(index,3,m_department);
index++;
pRecordset->MoveNext();
}
CDataBase::Close();