个位大侠我问个比较菜的问题
我想把数据库中的数据导入listbox
在 listbox上面还要有数据库表的上的列名 
左边还要有多选框 
选中后点击确定
把选中的项放到另一个listbox中
请各位提供个方法!

解决方案 »

  1.   

    如果要显示多个列,貌似使用clistctrl更合适一些...
      

  2.   

    带列明的用CListCtrl最好,listBox显示不方便
      

  3.   

    对对对 ,是 CListctrl
    我笔误写错了 
      

  4.   

    clistctrl设置LVS_EX_CHECKBOXES扩展风格,就会在行前显示复选框...
      

  5.   

    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);
      ……
    }
      

  6.   

    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]); }这是我的代码 但是运行后没有显示出应有的内容
      

  7.   

    先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]); 
      

  8.   

    其实要实现起来很简单,就是说起来比较麻烦而已.
    先为工程添加两个列表视图控件,并为他们定义控制型变量: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中,相信不是难事,这里我就不再表述.当然以上代码有改进的地方,仅供参考.
      

  9.   

    其实要实现起来很简单,就是说起来比较麻烦而已.
    先为工程添加两个列表视图控件,并为他们定义控制型变量: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中,相信不是难事,这里我就不再表述.当然以上代码有改进的地方,仅供参考.
      

  10.   


    就用CListCtrl,网上找点源码,修改修改就行了