void CMyView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
// TODO: You may populate your ListView with items by directly accessing
// its list control through a call to GetListCtrl().
if(m_Set==NULL)
{
AfxMessageBox("还没有对记录集进行初始化");
return;
}
if(!m_Set->IsOpen())
{
m_Set->Open();//打开记录集
}
int i=0,j=0;
CODBCFieldInfo DbFi;//存储ODBC记录集字段信息的结构体
LV_COLUMN m_Lc; //存储列信息的结构体
m_Lc.mask=LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM; //设置列属性
for(i=0;i<m_Set->m_nFields;i++)//m_nFields是CRecordset对象的成员变量
{ //m_nFields=m_Set->GetODBCFieldCount()
m_Set->GetODBCFieldInfo(i,DbFi); //用索引来查找字段
m_Lc.iSubItem=i; //LVCF_SUBITEM
m_Lc.fmt=LVCFMT_LEFT; //LVCF_FMT
m_Lc.cx=DbFi.m_strName.GetLength()*10+85; //LVCF_WIDTH
m_Lc.pszText=DbFi.m_strName.GetBuffer(DbFi.m_strName.GetLength());
//LVCF_TEXT
GetListCtrl().InsertColumn(i,&m_Lc);//CListView::GetListCtrl()
}
//行操作
//根据记录集的数据信息添加行
LV_ITEM m_item;
CString string;
CDBVariant DbVariant;
i=0;
if(m_Set->IsEOF()) //记录集是否为空
{
AfxMessageBox("记录集没有记录");
return;
}
m_Set->MoveFirst(); //从第一个记录开始
while(m_Set->IsEOF()==0) //是否到达最后一个记录
{
m_item.mask=LVIF_TEXT;
m_item.iItem=i;
m_item.iSubItem=0;
m_Set->GetFieldValue((short)0,string);
m_item.pszText=string.GetBuffer(string.GetLength());
m_List->InsertItem(&m_item);//插入条目
//显示列数据
for(j=1;j<m_Set->m_nFields;j++)
{
m_Set->GetFieldValue((short)j,string);
m_List->SetItemText(i,j,string.GetBuffer(string.GetLength())+1);
}
m_Set->MoveNext();//下移记录
i++;
}
}
如果要整个源程序也可以,只要让我会就行