CListCtrl 加入数据的问题 在线----------

psusjh 2006-08-08 08:58:50
void CFilm::ReadToList(CListCtrl& list,LPCSTR strSql)
{
list.DeleteAllItems();
CHeaderCtrl *pHeader=list.GetHeaderCtrl();

if(pHeader!=NULL)
{
int cou=pHeader->GetItemCount();
for(int i=0;i<cou;i++)
{
pHeader->DeleteItem(0);
}
}

list.InsertColumn(0,"名称",LVCFMT_CENTER,80);
list.InsertColumn(1,"导演",LVCFMT_CENTER,150);
list.InsertColumn(2,"主演",LVCFMT_CENTER,150);
list.InsertColumn(3,"语言",LVCFMT_CENTER,50);
list.InsertColumn(4,"地区",LVCFMT_CENTER,50);
list.InsertColumn(5,"文件格式",LVCFMT_CENTER,50);
list.InsertColumn(6,"加入日期",LVCFMT_CENTER,80);
list.InsertColumn(7,"集数",LVCFMT_CENTER,50);
list.InsertColumn(8,"点击量",LVCFMT_CENTER,50);
pFilmRecord=m_ado.GetRecordset((_bstr_t)strSql);

//if(pFilmRecord==NULL)
// return;
int i=0;
int iColumnCount=list.GetHeaderCtrl()->GetItemCount();
CString strIndex;
CStringArray strArray;
// pFilmRecord->MoveFirst();
AfxMessageBox(strSql);
while(!pFilmRecord->adoEOF)
{

strArray.RemoveAll();
strIndex.Format("%d",i);
if(list.InsertItem(LVIF_TEXT|LVIF_STATE,i,strIndex,0,LVIS_SELECTED,0,0)!=-1)
AfxMessageBox("success");
_variant_t vValue;
CString strValue;//,strDirector,strRole,strLanguage,strArea,strForm,strDate,strCount,strKick;
vValue=pFilmRecord->GetCollect("film_name");
strValue=(LPCSTR)_bstr_t(vValue);
strArray.Add(strValue);



vValue=pFilmRecord->GetCollect("film_director");
if(vValue.vt==VT_NULL)
strArray.Add("");
else
strArray.Add((LPCSTR)_bstr_t(vValue));


vValue=pFilmRecord->GetCollect("film_role");
if(vValue.vt==VT_NULL)
strArray.Add("");
else
strArray.Add((LPCSTR)_bstr_t(vValue));

vValue=pFilmRecord->GetCollect("film_language");
if(vValue.vt==VT_NULL)
strArray.Add("");
else
strArray.Add((LPCSTR)_bstr_t(vValue));

vValue=pFilmRecord->GetCollect("film_area");
if(vValue.vt==VT_NULL)
strArray.Add("");
else
strArray.Add((LPCSTR)_bstr_t(vValue));

vValue=pFilmRecord->GetCollect("film_form");
if(vValue.vt==VT_NULL)
strArray.Add("");
else
strArray.Add((LPCSTR)_bstr_t(vValue));

vValue=pFilmRecord->GetCollect("film_joindate");

if(vValue.vt==VT_NULL)
strArray.Add("");
else
{
vValue.ChangeType(VT_BSTR);
vValue.operator _bstr_t();
strArray.Add((LPCSTR)_bstr_t(vValue));
}



vValue=pFilmRecord->GetCollect("film_count");
if(vValue.vt==VT_NULL)
strArray.Add("");
else
strArray.Add((LPCSTR)_bstr_t(vValue));

vValue=pFilmRecord->GetCollect("film_kickcount");
if(vValue.vt==VT_NULL)
strArray.Add("");
else
strArray.Add((LPCSTR)_bstr_t(vValue));
for(int t=0;t<iColumnCount;t++)
{

list.SetItemText(i,t,strArray.GetAt(t));
AfxMessageBox(strArray.GetAt(t));
}
i++;
pFilmRecord->MoveNext();

}
}
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
handsomerun 2006-08-08
  • 打赏
  • 举报
回复
给你一段插数据的实例代码吧

int nIndex = m_listctrl.GetItemCount();

LV_ITEM lvitemAdd = {0};
lvitemAdd.mask = LVIF_TEXT;
lvitemAdd.iItem = nIndex ;
lvitemAdd.iSubItem = 0;
lvitemAdd.pszText =_T("毛毛1");;


if (m_listctrl.InsertItem(&lvitemAdd) != -1)
{
LV_ITEM lvitem = {0};
lvitem.mask = LVIF_TEXT;
lvitem.iItem = nIndex ;
lvitem.iSubItem = 1;

lvitem.pszText =_T("毛毛2");
m_listctrl.SetItem(&lvitem);

}

nIndex 是当前的行数,然后把新的一行,插在最下面,

Stefine 2006-08-08
  • 打赏
  • 举报
回复
呵呵,没看出来

跟踪下i,t,及对应的strArray.GetAt(t)就晓得了
ALazyworm 2006-08-08
  • 打赏
  • 举报
回复
int nIndex = list.InsertItem(); //InsertItem的参数好像不对阿

if(nIndex!=-1)
.....
list.SetItemText(nIndex,t,strArray.GetAt(t)); //可能
psusjh 2006-08-08
  • 打赏
  • 举报
回复
不能加入到LIST里面数据,为什么呢?

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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