mfc listbox与数据库 个位大侠我问个比较菜的问题我想把数据库中的数据导入listbox在 listbox上面还要有数据库表的上的列名 左边还要有多选框 选中后点击确定把选中的项放到另一个listbox中请各位提供个方法! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果要显示多个列,貌似使用clistctrl更合适一些... 带列明的用CListCtrl最好,listBox显示不方便 对对对 ,是 CListctrl我笔误写错了 clistctrl设置LVS_EX_CHECKBOXES扩展风格,就会在行前显示复选框... m_ctlList.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);获取各行check状态for(int i=0;i<m_ctlList.GetItemCount();i++){ BOOL bState = m_ctlList.GetCheck(i); ……} m_List_Tesult.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES);// LV_COLUMN lvcolumn; //ÉèÖ÷çžñ TCHAR title[6][10] = {_T("A"),_T("B"),_T("C"),_T("D"),_T("E"),_T("F")}; UINT width[6]={45,60,60,40,100,100}; for(UINT i=0;i<6;i++) { lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVCF_ORDER; lvcolumn.fmt = LVCFMT_LEFT; lvcolumn.pszText = title[i]; lvcolumn.iSubItem = i; lvcolumn.iOrder = i; lvcolumn.cx = width[i]; int a = m_List_Tesult.InsertColumn(i,&lvcolumn); }CString str[18]; for(int i=0;i<18;i++) { str[i].Format("%d",i); } for(int i=0;i<3;i++) { m_List_Tesult.SetItemText(i,0,str[i]); m_List_Tesult.SetItemText(i,1,str[i+1]); m_List_Tesult.SetItemText(i,2,str[i+2]); m_List_Tesult.SetItemText(i,3,str[i+3]); m_List_Tesult.SetItemText(i,4,str[i+4]); m_List_Tesult.SetItemText(i,5,str[i+5]); }这是我的代码 但是运行后没有显示出应有的内容 先InsertItem添加一行,然后再SetItemText设置其它的列...m_List_Tesult.InsertItem(i,str[i]);m_List_Tesult.SetItemText(i,1,str[i+1]); m_List_Tesult.SetItemText(i,2,str[i+2]); m_List_Tesult.SetItemText(i,3,str[i+3]); m_List_Tesult.SetItemText(i,4,str[i+4]); m_List_Tesult.SetItemText(i,5,str[i+5]); 其实要实现起来很简单,就是说起来比较麻烦而已.先为工程添加两个列表视图控件,并为他们定义控制型变量:m_list1,m_list2;首先要做的就是初始化m_list1:(这里我就省略了创建数据库并与之建立连接的过程,直接开始获取数据库的数据并添加到m_list1中去,当然还必须定义实例化连接对象,在初始化中实例化连接对象.)在OnCreate(LPCREATESTRUCT lpCreateStruct)函数中为第一个列表视图进行初始化:(加入以下代码)m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_UNDERLINEHOT);int width[3]={120,100,50};CString m_ColumnLabelStr[]={"姓名","性别","年龄"};//表头字段与数据库中的一致即可.这里自行设定.for(int i=0;i<3;i++){m_list1.InsertColumn(i,m_ColumnLabelStr[i],LVCFMT_CENTER,width[i]);}然后就要获取数据库中的数据信息添加到列表视图控件中: HRESULT hr; //使用记录集来收集定位点记录 _RecordsetPtr Record; Record.CreateInstance(__uuidof(Recordset)); CString vSQL,strValue1,strValue2,strValue3; _variant_t var1,var2,var3;// vSQL="select * from 表名 "; try { hr=Record->Open((_variant_t)vSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch(...) { AfxMessageBox("打开数据库失败!"); return false; } //判断记录集是否有记录 if((Record->BOF)&&(Record->adoEOF)) { AfxMessageBox("目前还没有该号码的定位信息!"); return false; } else { int i=0; while(!Record->adoEOF) { var1=Record->GetCollect("姓名"); var2=Record->GetCollect("性别"); var3=Record->GetCollect("年龄"); if(var1.vt!=VT_NULL) { strValue1=(LPCSTR)_bstr_t(var1); strValue2=(LPCSTR)_bstr_t(var2); strValue3=(LPCSTR)_bstr_t(var3); m_list1.SetItemText(i,0,strValue1); m_list1.SetItemText(i,1,strValue2); m_list1.SetItemText(i,2,strValue3); i++; } else { strValue1=""; break; } Record->MoveNext(); } } Record->Close();//关闭记录集这里就初始化完了m_list1,至于如何将m_list1中的被选中项添加到m_list2中,相信不是难事,这里我就不再表述.当然以上代码有改进的地方,仅供参考. 其实要实现起来很简单,就是说起来比较麻烦而已.先为工程添加两个列表视图控件,并为他们定义控制型变量:m_list1,m_list2;首先要做的就是初始化m_list1:(这里我就省略了创建数据库并与之建立连接的过程,直接开始获取数据库的数据并添加到m_list1中去,当然还必须定义实例化连接对象,在初始化中实例化连接对象.)在OnCreate(LPCREATESTRUCT lpCreateStruct)函数中为第一个列表视图进行初始化:(加入以下代码)m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_UNDERLINEHOT);int width[3]={120,100,50};CString m_ColumnLabelStr[]={"姓名","性别","年龄"};//表头字段与数据库中的一致即可.这里自行设定.for(int i=0;i<3;i++){m_list1.InsertColumn(i,m_ColumnLabelStr[i],LVCFMT_CENTER,width[i]);}然后就要获取数据库中的数据信息添加到列表视图控件中: HRESULT hr; //使用记录集来收集定位点记录 _RecordsetPtr Record; Record.CreateInstance(__uuidof(Recordset)); CString vSQL,strValue1,strValue2,strValue3; _variant_t var1,var2,var3;// vSQL="select * from 表名 "; try { hr=Record->Open((_variant_t)vSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch(...) { AfxMessageBox("打开数据库失败!"); return false; } //判断记录集是否有记录 if((Record->BOF)&&(Record->adoEOF)) { AfxMessageBox("目前还没有该号码的定位信息!"); return false; } else { int i=0; while(!Record->adoEOF) { var1=Record->GetCollect("姓名"); var2=Record->GetCollect("性别"); var3=Record->GetCollect("年龄"); if(var1.vt!=VT_NULL) { strValue1=(LPCSTR)_bstr_t(var1); strValue2=(LPCSTR)_bstr_t(var2); strValue3=(LPCSTR)_bstr_t(var3); m_list1.SetItemText(i,0,strValue1); m_list1.SetItemText(i,1,strValue2); m_list1.SetItemText(i,2,strValue3); i++; } else { strValue1=""; break; } Record->MoveNext(); } } Record->Close();//关闭记录集这里就初始化完了m_list1,至于如何将m_list1中的被选中项添加到m_list2中,相信不是难事,这里我就不再表述.当然以上代码有改进的地方,仅供参考. 就用CListCtrl,网上找点源码,修改修改就行了 求教如何在mfc上实现实时监控串口数据用图标指示状态 winxp 下MDI子窗体标题修改问题 我向注册表添加一个启动项,如何能让瑞星,360等软件不发出警告? [新手]关于键盘钩子的问题(按1次变2次) 设置窗口切分的问题~ 100分时钟控制求解 如何使用SQL语句?急急急!!!在线等待! DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO DAO 关于串口通讯问题 如何在客户端和服务端之间传递BSTR值,多谢! 鼠标右键菜单.Ponit座标与OBject所在CRECT不对应.. VC写的DLL如何接受参数传递.?
我笔误写错了
{
BOOL bState = m_ctlList.GetCheck(i);
……
}
m_List_Tesult.InsertItem(i,str[i]);m_List_Tesult.SetItemText(i,1,str[i+1]); m_List_Tesult.SetItemText(i,2,str[i+2]); m_List_Tesult.SetItemText(i,3,str[i+3]); m_List_Tesult.SetItemText(i,4,str[i+4]); m_List_Tesult.SetItemText(i,5,str[i+5]);
先为工程添加两个列表视图控件,并为他们定义控制型变量:m_list1,m_list2;
首先要做的就是初始化m_list1:
(这里我就省略了创建数据库并与之建立连接的过程,直接开始获取数据库的数据并添加到m_list1中去,当然还必须定义实例化连接对象,在初始化中实例化连接对象.)
在OnCreate(LPCREATESTRUCT lpCreateStruct)函数中为第一个列表视图进行初始化:(加入以下代码)
m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_UNDERLINEHOT);
int width[3]={120,100,50};
CString m_ColumnLabelStr[]={"姓名","性别","年龄"};//表头字段与数据库中的一致即可.这里自行设定.
for(int i=0;i<3;i++)
{
m_list1.InsertColumn(i,m_ColumnLabelStr[i],LVCFMT_CENTER,width[i]);
}
然后就要获取数据库中的数据信息添加到列表视图控件中:
HRESULT hr;
//使用记录集来收集定位点记录
_RecordsetPtr Record;
Record.CreateInstance(__uuidof(Recordset));
CString vSQL,strValue1,strValue2,strValue3;
_variant_t var1,var2,var3;//
vSQL="select * from 表名 ";
try
{
hr=Record->Open((_variant_t)vSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(...)
{
AfxMessageBox("打开数据库失败!");
return false;
}
//判断记录集是否有记录
if((Record->BOF)&&(Record->adoEOF))
{
AfxMessageBox("目前还没有该号码的定位信息!");
return false;
}
else
{
int i=0;
while(!Record->adoEOF)
{
var1=Record->GetCollect("姓名");
var2=Record->GetCollect("性别");
var3=Record->GetCollect("年龄");
if(var1.vt!=VT_NULL)
{
strValue1=(LPCSTR)_bstr_t(var1);
strValue2=(LPCSTR)_bstr_t(var2); strValue3=(LPCSTR)_bstr_t(var3);
m_list1.SetItemText(i,0,strValue1);
m_list1.SetItemText(i,1,strValue2);
m_list1.SetItemText(i,2,strValue3);
i++;
}
else
{
strValue1="";
break;
}
Record->MoveNext();
}
}
Record->Close();//关闭记录集这里就初始化完了m_list1,至于如何将m_list1中的被选中项添加到m_list2中,相信不是难事,这里我就不再表述.当然以上代码有改进的地方,仅供参考.
先为工程添加两个列表视图控件,并为他们定义控制型变量:m_list1,m_list2;
首先要做的就是初始化m_list1:
(这里我就省略了创建数据库并与之建立连接的过程,直接开始获取数据库的数据并添加到m_list1中去,当然还必须定义实例化连接对象,在初始化中实例化连接对象.)
在OnCreate(LPCREATESTRUCT lpCreateStruct)函数中为第一个列表视图进行初始化:(加入以下代码)
m_list1.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_UNDERLINEHOT);
int width[3]={120,100,50};
CString m_ColumnLabelStr[]={"姓名","性别","年龄"};//表头字段与数据库中的一致即可.这里自行设定.
for(int i=0;i<3;i++)
{
m_list1.InsertColumn(i,m_ColumnLabelStr[i],LVCFMT_CENTER,width[i]);
}
然后就要获取数据库中的数据信息添加到列表视图控件中:
HRESULT hr;
//使用记录集来收集定位点记录
_RecordsetPtr Record;
Record.CreateInstance(__uuidof(Recordset));
CString vSQL,strValue1,strValue2,strValue3;
_variant_t var1,var2,var3;//
vSQL="select * from 表名 ";
try
{
hr=Record->Open((_variant_t)vSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(...)
{
AfxMessageBox("打开数据库失败!");
return false;
}
//判断记录集是否有记录
if((Record->BOF)&&(Record->adoEOF))
{
AfxMessageBox("目前还没有该号码的定位信息!");
return false;
}
else
{
int i=0;
while(!Record->adoEOF)
{
var1=Record->GetCollect("姓名");
var2=Record->GetCollect("性别");
var3=Record->GetCollect("年龄");
if(var1.vt!=VT_NULL)
{
strValue1=(LPCSTR)_bstr_t(var1);
strValue2=(LPCSTR)_bstr_t(var2); strValue3=(LPCSTR)_bstr_t(var3);
m_list1.SetItemText(i,0,strValue1);
m_list1.SetItemText(i,1,strValue2);
m_list1.SetItemText(i,2,strValue3);
i++;
}
else
{
strValue1="";
break;
}
Record->MoveNext();
}
}
Record->Close();//关闭记录集这里就初始化完了m_list1,至于如何将m_list1中的被选中项添加到m_list2中,相信不是难事,这里我就不再表述.当然以上代码有改进的地方,仅供参考.
就用CListCtrl,网上找点源码,修改修改就行了