list控件为什么无法显示数据库中内容,该如何处理

list控件为什么无法显示数据库中内容,该如何处理,第1张

可以试试下面的代码:

创建单文档应用程序,在选择窗口视图类型时,选择CListView视图。

在视图类的初始化消息函数中添加如下显示控件的代码:

void CTestlistView::OnInitialUpdate()

{

CListView::OnInitialUpdate()

CDC* dc = GetDC()

TEXTMETRIC tm

dc->GetTextMetrics(&tm)

GetListCtrl().ModifyStyle(0,LVS_REPORT|LVS_SHOWSELALWAYS|LVS_SORTASCENDING)

GetListCtrl().SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,0,

LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES|LVS_EX_TRACKSELECT)

GetListCtrl().InsertColumn(0,"Name",LVCFMT_LEFT,30*tm.tmAveCharWidth,0)

GetListCtrl().InsertColumn(1,"Comment",LVCFMT_LEFT,70*tm.tmAveCharWidth,1)

// TODO: You may populate your ListView with items by directly accessing

// its list control through a call to GetListCtrl().

}

是CScrollView类吧?这个是默认带滚动的,ADO只是一种连接数据库的方案,跟View 是什么类型的没有关系,当然也可以选别的类的,比如你选CListView作为基类,可以用GetListCtrl()得到ListView的指针然后利用ADO技术连接到数据库,从数据库中取得数据,然后一行一行的插入到列表中。

此外也可以选CEditView,这样View 就成了一个类似于记事本的东东,可以把用ADO技术读到的数据库中表的内容显示到屏幕上。

关于ADO,可以看看COM的相关资料。

但如果刚开始学VC,还是看看孙鑫的VC视频,先了解一下MFC框架的机制比较好。

应该是基于CRecordView才行,这样系统会自动生成一个相应的***Set类,里面有你数据源中的所有字段和变量,同时View类里会有个自动生成的m_pSet指针,是Set类里的,这个指针直接可以 *** 作数据库。比如我要把数据库的数据全部显示到一个报表,就是这样:

m_pSet->MoveFirst()

m_list.DeleteAllItems()//m_list是报表关联的Control型变量

do

{

CString s,s1,s2

s.Format("%d",i+1)

s1.Format("%ld",m_pSet->m_stuId)

s2.Format("%ld",m_pSet->m_stuFamilyNum)//这4条是变量类型的转换

m_list.InsertItem(i,s)//i是一个全局变量,初始值为0,用来计数的

m_list.SetItemText(i,1,s1)

m_list.SetItemText(i,2,m_pSet->m_stuName)

m_list.SetItemText(i,3,m_pSet->m_stuSex)

m_list.SetItemText(i,4,m_pSet->m_stuProfession)

m_list.SetItemText(i,5,m_pSet->m_stuClass)

m_list.SetItemText(i,6,m_pSet->m_stuHobby)

m_list.SetItemText(i,7,m_pSet->m_stuAddress)

m_list.SetItemText(i,8,s2)//向报表插入数据库的数据,也就是读取数据库

i++// i 递增

m_pSet->MoveNext()//指针后移

} while(!m_pSet->IsEOF())

m_pSet->Close()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10059510.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存