2

我第一次使用 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;
    }

这不是更新表格的正确方法吗?

4

3 回答 3

5

弄清楚了。这个链接解释了它。

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 时创建一个新实例。

于 2013-05-01T17:01:56.440 回答
0

尝试

dataGridView2.DataSource = null;

dataGridView2.DataSource = b;

还可以尝试在分配之前将您的数据转换为列表。

b.DataSource = (from eq in db.equipments
                select eq).ToList();
于 2013-05-01T16:00:05.027 回答
0

也许这对你有帮助

https://www.devexpress.com/Support/Center/Question/Details/Q142798

例子:

var orders = DBInterface.dcAPI.OrderInfos;
var b = orders.GetNewBindingList();
dgOrders.ItemsSource = b;
于 2017-01-20T11:17:27.943 回答