如何在更新发生时正确加载DataGridView
本文关键字:加载 DataGridView 更新 | 更新日期: 2023-09-27 18:09:24
我不久前实现了一个DataGridView。它很好用。现在我在做一些重载测试,但是失败了。它会在任何地方抛出异常,至少当它试图加载数据时。
问题:DataContext Refresh
有一个方法,我刷新DataGridView
内的数据。
一个异常告诉我已经有一个DataReader
打开,我必须先关闭它。
第二个异常告诉我"在调用提交更改期间不能执行该操作"。
问题是我自己没有使用DataReaders
,我使用的方法如下所示:
this.bindingSource.EndEdit();
this.bindingSource.DataSource = null;
// DataControl is my controler where the table is stored. It is a singleton.
DataControl.Instance.m_DBTable.Context.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, DataControl.Instance.m_DBTable);
this.bindingSource.ResetBindings(false);
this.bindingSource.DataSource = DataControl.Instance.m_DBTable;
我希望有人能在这个问题上帮助我。如有需要,请随时询问更多细节。
感谢抛出更多异常(不仅在该方法上,而且在同一表单上)
- 内部连接致命错误
- Sql DateTime-Overflow(必须在1/1/1753和21/31/9999之间)(我真的总是初始化我所有的日期-时间变量!)
- 当没有可用数据时,读取操作无效。
- 无引用异常
任何时候你得到与此有关的错误包装你的数据阅读器在using语句。这适用于任何阅读器/写入器
using(var daraReader = new DataReader())
{
// Use your data reader here, it will not be left open
}
DataContext实际上不是被设计成单例的,使用singleton模式来Linq to Sql DataContext。这是你在编写代码时首先要考虑的问题。
如果它不工作-尝试至少剖析问题区域(http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。不要绑定数据。试着把它们转储到一个文件或其他地方。我们将确保问题不是由绑定引起的。
如果它不工作,那么很可能你有问题,由于LINQ到SQL和你的数据库的并发问题。看起来标准的锁和机制不能正常工作。或者他们工作太勤奋了。
很少有像样的文章http://blogs.msdn.com/b/matt/archive/2008/05/22/into-to-linq-to-sql-optimistic-concurrency.aspx, http://www.codeproject.com/Articles/38299/How-To-Handle-Concurrency-in-LINQ-to-SQL解释LINQ中的并发性。
我希望它能有所帮助。