Linq to SQL:在SubmitChanges之后更新dataGridView不工作
本文关键字:更新 dataGridView 工作 之后 SubmitChanges to SQL Linq | 更新日期: 2023-09-27 18:11:53
第一次使用LINQ时,我遇到了一个奇怪的问题。我使用MS SQL 2008。如果我改变一行和SubmitChanges(),我可以看到SQL Server Management Studio中的变化,但是当我查询用更新的信息重新填充我的dataGridViews时,我得到了旧版本的数据。
下面是我的数据的变化:
if (textBox1.Text.Length > 1)
{
var query = from eq in db.equipments
where eq.SerNo == serial
select eq;
foreach (equipment equip in query)
{
equip.Loc = textBox1.Text;
equip.Owner = "Evisive";
equip.Status = updatedStatus;
equip.SystemName = "";
}
db.SubmitChanges();
}
else
{
MessageBox.Show("Enter a Destination");
}
同样,该部分有效(更改数据库中的数据)。下面是我尝试更新表的地方(似乎不起作用的部分):
public void Update_EquipmentGrid()
{
BindingSource b = new BindingSource();
b.DataSource = from eq in db.equipments
select eq;
dataGridView2.DataSource = b;
}
这不是更新表的正确方式吗?
明白了。这个链接解释了。
http://msdn.microsoft.com/en-us/library/Bb386982 (v = vs.110) . aspx
代码应该是:
InventoryDataContext dba = new InventoryDataContext();
BindingSource b = new BindingSource();
b.DataSource = from eq in dba.equipments
select eq;
dataGridView2.DataSource = b;
不知道为什么,但是您需要在每次更新DataContext时创建一个新的实例
Try
dataGridView2.DataSource = null;
之前dataGridView2.DataSource = b;
在分配之前也尝试将数据转换为列表。
b.DataSource = (from eq in db.equipments
select eq).ToList();
也许这对你有帮助
https://www.devexpress.com/Support/Center/Question/Details/Q142798的例子:
var orders = DBInterface.dcAPI.OrderInfos;
var b = orders.GetNewBindingList();
dgOrders.ItemsSource = b;