LINQ DataGridView插入删除未显示

时间:2012-02-15 14:44:22

标签: winforms linq datagridview savechanges

我的DataGrid绑定到LINQ表达式时出现问题。 事实上,我使用相同的DataContext将两个DataGrid绑定到同一个SQL表。

当我在一个或另一个网格中编辑现有行时,更改会反映到另一个网格,反之亦然,如预期的那样。

但是当我在其中一个网格中插入记录或删除记录时,更改不会反映到其他网格中。就像新行处于我的LINQ表达式不进行这些类型更改的状态。

我需要将更改保存到数据库,然后其他网格才能“看到”更改。

无论如何,LINQ结果对象都可以通知Insert行/删除行的变化吗?

这是我的代码:

public partial class Form1 : Form
{
    GMR_DEVEntities  CTX;

    public Form1()
    {
        InitializeComponent();

        CTX = new GMR_DEVEntities();
        dataGridView1.AutoGenerateColumns = true;
        dataGridView2.AutoGenerateColumns = true;
        this.dataGridView1.Columns.Clear();
        this.dataGridView2.Columns.Clear();
    }

    private void btnLoadGrid1_Click(object sender, EventArgs e)
    {
        var Data = from dd in CTX.tblConfigs select dd;
        this.dataGridView1.DataSource = Data;

    }

    private void btnLoadGrid2_Click(object sender, EventArgs e)
    {
        var Data = from dd in CTX.tblConfigs select dd;
        this.dataGridView2.DataSource = Data;

    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        CTX.SaveChanges();
    }


}

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,效果很好。 第一个Grid(dtgGrid)附加到BindingSource,附加到LINQ查询结果。然后第二个网格(dtgFilteredGrid),附加到另一个BindindSource女巫是LINQ查询的结果,过滤第一个BindingSource。然后,当用户编辑dtgFilterGrid时,手动完成更新以使第一个BindingSource保持最新。