2012-02-15 2 views
0

LINQ 표현식에 바인딩 된 DataGrid에 문제가 있습니다. 사실 동일한 DataContext를 사용하여 동일한 SQL 테이블에 바인딩 된 두 개의 DataGrid를 가졌습니다.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

답변

0

내가 좋은 일을 해결책을 발견했습니다

여기 내 코드입니다. 첫 번째 Grid (dtgGrid)는 BindingSource에 연결되고 마녀는 LINQ 쿼리 결과에 연결됩니다. 그런 다음 두 번째 눈금 (dtgFilteredGrid)이 다른 BindindSource 마녀에 연결되면 첫 번째 BindingSource를 필터링하는 LINQ 쿼리의 결과입니다. 그런 다음 사용자가 dtgFilterGrid를 편집 할 때 첫 번째 BindingSource를 최신 상태로 유지하기 위해 수동으로 업데이트가 수행됩니다.

관련 문제