100分求助,请问如何刷新对话框中的CListCtrl的内容 删除的同时也删除LIST中的DeleteItem 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单也是最有效的做法是同上删除的同时也删除LIST中的 DeleteItem 我没用过CListCtrl,用过dbgrid,不知你的CListCtrl是不是直接与数据库相连的;如果是的话,更新数据库集,如果不是的话就再读一遍好了 CListCtrl 没有绑定到数据库的操作,只能删除和加入,没有其他方法。 删除后重新读取一次,或者直接在list控件中删除相应的行。 DeleteAllIteminsertsetitemtext 可以先删除listctrl里面的所有数据.然后再从数据库中重新获取.这种方法最简单请快.但需再次调用数据库或者你可以删除数据库之里识别所删数据的一个关键字,然后在listctrl里面查找这个关键字,再把这个关键字对应的数据从listctrl中删除也可.这样就不用反复调用数据库了.但你要注意关键字的唯一性 那就把刷新数据写成一个单独的函数不就行了!而且如果你只是简单的添加删除修改listctrl中的数据,没必要数据都重新刷新啊~可以先在数据库中删除记录,然后再在listctrl中删除数据不就行了~ 我这有一段代码:m_ctrlListTable.SetRedraw(false); m_ctrlListTable.DeleteAllItems(); int i=0; for(;i<strArrayTableName.GetSize();i++) { iStr.Format("%d",i); strEnvTablename=strArrayTableName.GetAt(i); strOldTableName=strEnvTablename; strNewTableName=strEnvTablename+strMonthTableName; strArrayNewTableName.Add(strNewTableName); m_ctrlListTable.InsertItem (i, iStr); m_ctrlListTable.SetItemText (i, 1,strEnvTablename); m_ctrlListTable.SetItemText (i, 2,strNewTableName); if(DATAMOUDLE->getEnvTableName(strOldTableName,strTopName)) DATAMOUDLE->getEnvTableStatus(strOldTableName,strIQExist); else strIQExist="不执行查询操作"; strArrayOldTableName.Add(strOldTableName); strArrayIQRecordCount.Add(strIQExist); m_ctrlListTable.SetItemText (i, 3,strOldTableName); m_ctrlListTable.SetItemText (i, 4,strIQExist); } m_ctrlListTable.SetRedraw(); 直接把读取功能 作成一个 UpDataAll()函数每次删除的时候调用一次 这样做比较保险 最直观的,假设操作的LIST叫plist//先删除list中原有的全部内容plist.DeleteAllItems();//重新从数据库中读数据//打开数据库,读数据//写入LIST中while(数据库本条数据不为空){plist.InsetItem(0,str0);plist.SetItemText(0,1,str1);plist.SetItemText(0,2,str2);......p_Set.MoveNext();//数据库p_Set中移至下一条} VC2008SP1修改了CREATESTRUCT的值可是改不了大小 关于异步I/O方式读取文件内容 关于ZedGraph画图控件的使用 大家帮我看看这篇文章有没有什么问题,我用着怎么就不行? 打算用Xmodem传文件,需要这方面的源代码或者指导,网上找到了但是无法下载,真是搀死人了,谢谢 CSocket支持组塞吗 使用CreateTimerQueue函数,为什么不能编译 为什么网络通讯程序调试模式下运行会频繁出现SOCKET函数返回错误? 有人知道ISAPI Filter里,如何得知IIS被正被停掉呢? 麻烦大家帮我看下这个直方图均衡化的代码 请教高手:内存分配堆栈溢出 关于积分
删除的同时也删除LIST中的
DeleteItem
如果是的话,更新数据库集,如果不是的话就再读一遍好了
insert
setitemtext
或者你可以删除数据库之里识别所删数据的一个关键字,然后在listctrl里面查找这个关键字,再把这个关键字对应的数据从listctrl中删除也可.这样就不用反复调用数据库了.但你要注意关键字的唯一性
而且如果你只是简单的添加删除修改listctrl中的数据,没必要数据都重新刷新啊~
可以先在数据库中删除记录,然后再在listctrl中删除数据不就行了~
m_ctrlListTable.DeleteAllItems();
int i=0;
for(;i<strArrayTableName.GetSize();i++)
{
iStr.Format("%d",i);
strEnvTablename=strArrayTableName.GetAt(i);
strOldTableName=strEnvTablename; strNewTableName=strEnvTablename+strMonthTableName;
strArrayNewTableName.Add(strNewTableName); m_ctrlListTable.InsertItem (i, iStr);
m_ctrlListTable.SetItemText (i, 1,strEnvTablename);
m_ctrlListTable.SetItemText (i, 2,strNewTableName);
if(DATAMOUDLE->getEnvTableName(strOldTableName,strTopName))
DATAMOUDLE->getEnvTableStatus(strOldTableName,strIQExist);
else
strIQExist="不执行查询操作";
strArrayOldTableName.Add(strOldTableName);
strArrayIQRecordCount.Add(strIQExist); m_ctrlListTable.SetItemText (i, 3,strOldTableName);
m_ctrlListTable.SetItemText (i, 4,strIQExist);
}
m_ctrlListTable.SetRedraw();
假设操作的LIST叫plist
//先删除list中原有的全部内容
plist.DeleteAllItems();
//重新从数据库中读数据
//打开数据库,读数据
//写入LIST中
while(数据库本条数据不为空)
{
plist.InsetItem(0,str0);
plist.SetItemText(0,1,str1);
plist.SetItemText(0,2,str2);
......
p_Set.MoveNext();//数据库p_Set中移至下一条
}