1. 上下文:
winform 程序,
dataGridView1的数据源为bindingSource1,
bindingSource1的数据源为linq to sql查询回来的数据集合,
2. 问题
对dataGridView1中的一条记录进行修改以后,更新到数据库(确定已经更新到数据库!),
但是想重新将新数据更新到dataGridView1中时,不管怎么按更新按钮都不行,
需要重启程序,在查询时,新数据才显示,
请教!
先总结一下,上面的建议都试了,不行。
补充一下,
(1) dataGridView1绑定bindingSource1(是拖的控件),是直接在控件设计时就绑定的。
(2) dataGridView1在MainForm中,buttonQuery_Click显示查询到的记录;
buttonQuery_Click中实现查询:
var query = from item in m_XXDataContext.Items ........;
bindingSource1.DataSource = query;
(3) dataGridView1中的行记录通过右键关联contextMenuStrip1,实现右键点击弹出新修改窗口modForm,完成修改并提交,同时modForm通过事件modCompleted通知MainForm刷新纪录,MainForm中对应的事件处理方法为modForm_modCompleted,modForm_modCompleted添加了dataGridView1.DataSource = null;及dataGridView1.DataSource = bindingSource1;等语句,并调用buttonQuery_Click方法显示查询记录。(但结果还是无法刷新,需要重启程序才能显示更新后的数据 - -)
(4) 我觉得可能是缓存机制问题,请帮忙解答一下,谢谢。
解决办法:
MyDataContext m_context = new MyDataContext();
在每次需要更新的时候,重新实例化m_context就可以了;
我觉得问题还是出在缓存方面,细节还没研究。
还得重新绑定查询
你更新过后,当然需要重新绑定数据啊。。。。
在更新的程序代码后面添加dataGridView1. DataBind();
在你更新的程序后写上
1 dataGridView1.DataSource=bindingSource1;
先将dataGridView1.DataSouse=null