2012-02-15 8 views
0

LINQ式にバインドされたDataGridに問題があります。 実際には、同じDataContextを使用して、同じSQLテーブルにバインドされた2つのDataGridを持っています。LINQ DataGridView挿入削除が表示されない

1つまたは他のグリッド内の既存の行を編集すると、その変更は他のグリッドに反映され、その逆も同様です。

ただし、レコードを挿入するか、グリッドの1つにレコードを削除すると、変更は他のグリッドに反映されません。これは、新しい行が私の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

答えて

0

私は良い仕事のソリューションを、見つけた:

は、ここに私のコードです。 最初のグリッド(dtgGrid)はBindingSourceにアタッチされ、WitchはLINQクエリ結果にアタッチされます。次に、2番目のグリッド(dtgFilteredGrid)は別のBindindSourceにアタッチされます。最初のBindingSourceをフィルタリングするLINQクエリの結果です。ユーザーがdtgFilterGridを編集すると、最初のBindingSourceを最新の状態に保つために更新が手動で実行されます。

関連する問題