请教一个关于CListCtrl的问题,希望大虾们能帮帮小弟!!!!

时间:2023-01-19 17:52:40
这是一个发生在基于对话框的MFC应用程序下的问题。
下面的方法是我自己写的,但是只有在输出四列的情况下才能正常显示,如果输出超过四列数据的话,就不但没有显示,而且会直接退出对话框程序
void CMemberDlg::AddToList()
{
m_List.DeleteAllItems();   //m_List是CListCtrl的一个对象
CADOConn adoconn;
adoconn.OnInitADOConn();  //初始化数据库连接

_bstr_t vSQL;
vSQL = "select * from base_Member";

int i = 0;

m_pRecordset = adoconn.GetRecordSet(vSQL);

while(!m_pRecordset->ADOEof)
{
m_List.InsertItem(i,"",0);
m_List.SetItemText(i,0,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_num"));
m_List.SetItemText(i,1,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_name"));
m_List.SetItemText(i,2,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_pw"));
m_List.SetItemText(i,3,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_sex"));
// m_List.SetItemText(i,4,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_idcard"));
// m_List.SetItemText(i,5,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_score"));
// m_List.SetItemText(i,6,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_money"));
// m_List.SetItemText(i,7,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_statu"));
// m_List.SetItemText(i,8,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_money"));
// m_List.SetItemText(i,9,(LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("mb_group"));
m_pRecordset->MoveNext();
}

adoconn.ExitConnect();
}

9 个解决方案

#1


你的列表中一共设置了有几列m_List.InsertColumn(,,,)?
如果只有3列的话就只能显示3列的数据了,对于为什么退出我也不知道

#2


引用 1 楼 ms0614 的回复:
你的列表中一共设置了有几列m_List.InsertColumn(,,,)?
如果只有3列的话就只能显示3列的数据了,对于为什么退出我也不知道

我的列表是原本是有10列的,如果只是打印4列的话,就能够正常显示,但是,如果要打印的列数超过4列,那么就会直接退出应用程序。我都快烦躁死了,希望有人能帮帮我!

#3


很明显是你没设置正确的列数
m_List.InsertColumn(1,"第二列"); 
.............

#4


那就很有可能是 m_pRecordset->GetCollect("mb_idcard"))的问题了 自己检查下

#5


引用 2 楼 qepdcwqxl 的回复:
引用 1 楼 ms0614 的回复:
你的列表中一共设置了有几列m_List.InsertColumn(,,,)?
如果只有3列的话就只能显示3列的数据了,对于为什么退出我也不知道

我的列表是原本是有10列的,如果只是打印4列的话,就能够正常显示,但是,如果要打印的列数超过4列,那么就会直接退出应用程序。我都快烦躁死了,希望有人能帮帮我!

你可以把你的和这个listctrl相关的代码粘贴一下,这样大家的分析也更有针对性

#6


引用 4 楼 yaozhiyong110 的回复:
那就很有可能是 m_pRecordset->GetCollect("mb_idcard"))的问题了 自己检查下


谢谢你的指点,我确实在这里犯了一个低级错误,把字段名给弄错了!狂汗!!!!

#7


1;CHeaderCtrl* GetHeaderCtrl( );

2;CHeaderCtrl::GetItemCount();
看看有多少列?

#8


你的CListCtrl有10列??

#9


谢谢各位朋友帮忙解答!
我的问题已经解决了!是我自己犯了一个低级错误,把字段名给弄错了!
唉!一个人做这种东东,太容易犯错了!一不留神就……
唉!不说了!总之……太纠结……
明天结贴给分!

#1


你的列表中一共设置了有几列m_List.InsertColumn(,,,)?
如果只有3列的话就只能显示3列的数据了,对于为什么退出我也不知道

#2


引用 1 楼 ms0614 的回复:
你的列表中一共设置了有几列m_List.InsertColumn(,,,)?
如果只有3列的话就只能显示3列的数据了,对于为什么退出我也不知道

我的列表是原本是有10列的,如果只是打印4列的话,就能够正常显示,但是,如果要打印的列数超过4列,那么就会直接退出应用程序。我都快烦躁死了,希望有人能帮帮我!

#3


很明显是你没设置正确的列数
m_List.InsertColumn(1,"第二列"); 
.............

#4


那就很有可能是 m_pRecordset->GetCollect("mb_idcard"))的问题了 自己检查下

#5


引用 2 楼 qepdcwqxl 的回复:
引用 1 楼 ms0614 的回复:
你的列表中一共设置了有几列m_List.InsertColumn(,,,)?
如果只有3列的话就只能显示3列的数据了,对于为什么退出我也不知道

我的列表是原本是有10列的,如果只是打印4列的话,就能够正常显示,但是,如果要打印的列数超过4列,那么就会直接退出应用程序。我都快烦躁死了,希望有人能帮帮我!

你可以把你的和这个listctrl相关的代码粘贴一下,这样大家的分析也更有针对性

#6


引用 4 楼 yaozhiyong110 的回复:
那就很有可能是 m_pRecordset->GetCollect("mb_idcard"))的问题了 自己检查下


谢谢你的指点,我确实在这里犯了一个低级错误,把字段名给弄错了!狂汗!!!!

#7


1;CHeaderCtrl* GetHeaderCtrl( );

2;CHeaderCtrl::GetItemCount();
看看有多少列?

#8


你的CListCtrl有10列??

#9


谢谢各位朋友帮忙解答!
我的问题已经解决了!是我自己犯了一个低级错误,把字段名给弄错了!
唉!一个人做这种东东,太容易犯错了!一不留神就……
唉!不说了!总之……太纠结……
明天结贴给分!