Linq to SQL:SubmitChanges无法正常工作后更新dataGridView
问题描述:
我第一次使用LINQ,遇到了一个奇怪的问题。我正在使用MS SQL 2008.如果我更改了一行和SubmitChanges(),我可以看到SQL Server Management Studio中的更改,但是当我查询用更新的信息填充我的dataGridViews时,我得到旧版本的数据。Linq to SQL:SubmitChanges无法正常工作后更新dataGridView
下面是我的数据的变化:
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;
}
这是不是更新表格的正确方法吗?
答
尝试
dataGridView2.DataSource = null;
前
dataGridView2.DataSource = b;
也可以尝试将数据分配之前上市。
b.DataSource = (from eq in db.equipments
select eq).ToList();
答
想通了。这个链接解释它。
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的一个新实例每次更新时。
答
也许这可以帮助你
https://www.devexpress.com/Support/Center/Question/Details/Q142798
例如:
var orders = DBInterface.dcAPI.OrderInfos;
var b = orders.GetNewBindingList();
dgOrders.ItemsSource = b;
第一个建议似乎没有任何效果,第二个禁用DataGridView的搜索功能。 – user1751215 2013-05-01 16:15:02
db.equipments的返回类型是什么?它是否可枚举? AutoGenerateColumns属性是否也设置为true? – 2013-05-01 16:19:24
不知道如何找到。当我将鼠标悬停在上面时,它被列为System.Data.Linq.Table InventoryDataContext设备。是的,AutoGenerateColumns属性为true。 –
user1751215
2013-05-01 16:27:11