2013-01-21 71 views
0

我想在C#中使用LINQ製作DataGridView。然後,當用戶雙擊其上的數據時,它會彈出窗體來編輯數據。我想要的是,在關閉彈出窗口後,DataGridView中的數據會自動刷新。datagridview上的數據不刷新C#

private void cooperationsDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
     { 
      frmKoperasi frm = new frmKoperasi (cooperationsDataGridView.CurrentRow.Cells["id"].Value.ToString()); 
      frm.FormClosed += delegate { refresh(sender,e); }; 
      frm.Show();            
     } 

private void refresh(object sender, EventArgs e) 
    { 
     this.listKoperasi_Load(sender, e);   
    } 

private void listKoperasi_Load(object sender, EventArgs e) 
    { 
     page = page - 1; 
     var query = (from c in db_cooperations.cooperations 
        orderby c.id 
        select c).Skip(numberOfObjectsPerPage * page).Take(numberOfObjectsPerPage); 

     cooperationsBindingSource.DataSource = query;   
    } 

但是,在關閉編輯窗體後,數據不刷新。什麼可能是錯的?

+0

你的數據類是否實現了'INotifyPropertyChanged'?這是LINQ到對象? LINQ to SQL? LINQ to Entity Framework? – user7116

+0

我正在使用LINQ TO SQL。有「公共部分班級合作:INotifyPropertyChanging,INotifyPropertyChanged」,這是你的意思嗎? – l1th1um

回答

0

只需添加.ToList()

cooperationsBindingSource.DataSource = query.ToList(); 
+0

我不太確定這是Popup沒有更新主數據網格中看到的數據的問題。 – user7116

+0

它只是一個嘗試先生:) – spajce

0

最後,我只是重寫一切從一開始,只是在朝好的方向發展。不知道爲什麼會發生:D