ADO+CListCtrl 虚表如何使用?我试了下,不知道怎么把查询的数据集添加到虚表中.

ffww 2009-01-27 10:48:14
void CFfDlg::OnButton1()
{
//连接数据库
m_pRecordset.CreateInstance(__uuidof(Recordset));//初始化一下_RecordsetPtr指针
try
{
m_pRecordset->Open("SELECT * FROM akcy", m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic, adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
//得到记录总数
m_pRecordset->MoveFirst();
int i=0;
while(!m_pRecordset->adoEOF)
{
m_pRecordset->MoveNext();
i++;

}
//设置虚表
m_ListCtrl.SetItemCount(i);
}
//----------------------------------------------------------------------------------------


void CFfDlg::OnGetdispinfoList1(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM* pItem= &(pDispInfo)->item;

int iItemIndx= pItem->iItem;
CString tmp;
tmp.Format("%d",iItemIndx+1);

if (pItem->mask & LVIF_TEXT) //字符串缓冲区有效
{
switch(pItem->iSubItem){
case 0: //填充数据项的名字
lstrcpy(pItem->pszText,"1111");//"111"是我随便赋的值,感觉很好,但怎么把这里改成数据集中的字段值?
break;
case 1: //填充子项1
lstrcpy(pItem->pszText,"222");
break;
case 2: //填充子项2
lstrcpy(pItem->pszText,"3333");
break;
case 3: //填充子项3
lstrcpy(pItem->pszText,tmp);
break;
}
}
现在运行感觉很快,但我怎么才能把查询的数据记录放进列表中呢?

*pResult = 0;
}
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2009-01-29
  • 打赏
  • 举报
回复
有几种方法:
一是在插入的时候将记录集中一个键值插入项目中(可以作为ItemData),在OnGetdispinfoList1中用这个键值进行筛选,然后取得记录集数据填充列表项目;
二是在OnGetdispinfoList1中根据LV_DISPINFO中的索引值访问记录集。
lwx300 2009-01-28
  • 打赏
  • 举报
回复
int iItemIndx= pItem->iItem; //记录的索引,可使用它获取记录的字段。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧