CListctrl列表插入数据刷新

来源:百度知道 编辑:UC知道 时间:2024/06/11 01:45:56
建立一对话框程序test,主对话框IDD_DIALOG_TEST加入一个列表控件(变量为contrl类型,m_list,用于显示数据库里的数据),有默认的确定和取消,我想点确定,弹出一新的对话框,我想在这个新的对话框上点确定,想数据库中添加数据后,关闭此对话框,然后主对话框IDD_DIALOG_TEST得列表控件里的内容更新(也就是有我新添加的内容),求新对话框的确定按钮的代码!我的是(.h我已经加了)
...... //添加数据代码
CTestDlg dlg; //建立主程序对象
dlg.m_list.SetRedraw(FALSE);
dlg.m_list.DeleteAllItems(); //把原来的控件内容清理
dlg.ShowList(); //重新插入数据
dlg.m_list.SetRedraw(TRUE);
我的一点确定就报错,但前面可以插入数据!
,请问如何操作!!

先在列表中查找,后插入比如每条记录都有一个唯一的编号,查询的时候,首先查找该编号的记录在列表中是否存在,如果存在则找到Item后,直接更新各个列的数据,如
LVFINDINFO lv;
lv.flags=LVFI_STRING;
lv.psz=“关键字”;
int nItem=m_list.FindItem(&lv,-1);
如果Item>0则直接更新数据,用SetItemText(nItem,0,“值1”),
如果Item<0,则插入一条Item,InsertItem(),然后SetItemText(nItem,0,“”)。

新对话框只负责保存数据,代码放到CTestDlg中。CTestDlg点确定执行代码:
CNewDlg dlg;
if( dlg.DoModal() == IDOK)
{
m_list.SetRedraw(FALSE);
m_list.DeleteAllItems();
ShowList();
m_list.SetRedraw(TRUE);
}

建议调试下下,看看mfc在哪里断言!我想,可能对象生存时间问题...调试一下就知道你