2012-02-15 62 views
0

我的DataGrid绑定到LINQ表达式时遇到了问题。 我实际上已经使用相同的DataContext将两个DataGrid绑定到同一个SQL表。LINQ DataGridView插入删除未显示

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

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

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

有没有反正LINQ的结果对象可以通知插入行/删除行更改?

这里是我的代码:

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(); 
    } 


} 
+0

我可以用另一种方式提出问题; 当我使用DataGridView插入行时,任何LINQ查询都不会获取新插入的行。 如何获得新的行而不必先前保存DataContext? – Hugo 2012-02-15 16:41:40

回答

0

我已经找到了解决办法,那工作不错。 第一个Grid(dtgGrid)附加到BindingSource,附加到LINQ查询结果。然后,第二个网格(dtgFilteredGrid),附加到另一个BindindSource女巫是LINQ查询过滤第一个BindingSource的结果。然后,当用户编辑dtgFilterGrid时,手动更新以保持第一个BindingSource是最新的。