首页 新闻 会员 周边

关于dataGridView1数据更新

0
悬赏园豆:5 [已关闭问题] 关闭于 2011-06-21 10:49

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就可以了;

我觉得问题还是出在缓存方面,细节还没研究。

dboy8454的主页 dboy8454 | 初学一级 | 园豆:174
提问于:2011-06-18 16:35
< >
分享
所有回答(5)
0

还得重新绑定查询

代码苦行僧 | 园豆:311 (菜鸟二级) | 2011-06-18 18:35
问题已补充,请看一下
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 14:18
0

你更新过后,当然需要重新绑定数据啊。。。。

顾晓北 | 园豆:10844 (专家六级) | 2011-06-18 23:25
问题已补充,请看一下
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 14:18
你看看控件有Refresh一类的方法没有?这个行不?另外,你重新绑定数据了吗?
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2011-06-20 22:43
0

在更新的程序代码后面添加dataGridView1. DataBind();

加百力 | 园豆:533 (小虾三级) | 2011-06-19 00:34
没此方法 - -
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 13:51
他说的那是Web上有这个方法。
支持(0) 反对(0) 顾晓北 | 园豆:10844 (专家六级) | 2011-06-20 22:41
0

在你更新的程序后写上

View Code
1 dataGridView1.DataSource=bindingSource1;
王元勋 | 园豆:413 (菜鸟二级) | 2011-06-20 08:36
有写,不行
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 13:54
给你的代码贴出来看下
支持(0) 反对(0) 王元勋 | 园豆:413 (菜鸟二级) | 2011-06-20 13:56
请看一下我的问题补充,下面是事件处理方法;
void modForm_modCompleted(object sender, EventArgs e)
{
//刷新
//bindingSource1.DataSource = null;
dataGridView1.DataSource = null;
dataGridView1.DataSource = bindingSource1;
//dataGridView1.Rows.Clear();
buttonQuery_Click(this, null);
}
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 14:14
你在你弹出窗口的部分写
modForm mod = new modForm();
mod.showDialog();
支持(0) 反对(0) 王元勋 | 园豆:413 (菜鸟二级) | 2011-06-20 14:18
我写的是:
ModForm modForm = new ModForm(theItem);
modForm.modCompleted += modForm_modCompleted;
modForm.Show(this);

你的试了,不行,
Show的方式应该不会影响到数据的,我觉得。
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 14:33
我建议你还是试一下,我记得我以前刚学的时候也遇到你这个问题,就是那么解决的
支持(0) 反对(0) 王元勋 | 园豆:413 (菜鸟二级) | 2011-06-20 14:37
showDialog方式试了,不行 - -
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 14:43
其实跟事件方式也没关系,
因为我更新好以后,查看了数据库,里面的数据的确已经更新了,
但是就是在界面上不管怎么按更新按钮,界面数据就是无法更新。
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 14:45
你再好好检查检查吧,我感觉不会还有别的什么原因了
支持(0) 反对(0) 王元勋 | 园豆:413 (菜鸟二级) | 2011-06-20 14:48
多谢
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 14:59
也没有帮到什么忙
支持(0) 反对(0) 王元勋 | 园豆:413 (菜鸟二级) | 2011-06-20 15:02
已解决
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-21 10:50
0

先将dataGridView1.DataSouse=null

辛巴 | 园豆:622 (小虾三级) | 2011-06-20 11:25
有写,不行
支持(0) 反对(0) dboy8454 | 园豆:174 (初学一级) | 2011-06-20 13:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册