2010-01-18 101 views
1

我正在使用DataGridView來顯示.NET實體框架中的EntityObjects。使用實體框架跟蹤datagridview中的對象更改

如果相應的EntityObject已被用戶更改,例如,如何更改DataGridView的一行的格式。

public EntityState GetState(object o) 
{ 
    var entry = context.ObjectStateManager.GetObjectStateEntry(o); 
    return entry.State; 
} 

您可以處理CellPainting事件DataGridView的改變根據該行的風格:大膽

問候顯示該行

回答

1

可以使用ObjectStateManager檢索對象的狀態到實體狀態

private grid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) 
{ 
    object entity = grid.Rows[e.RowIndex].DataBoundItem; 
    var state = GetState(o); 
    switch(state) 
    { 
     case Detached : 
      e.CellStyle.Font = italicFont; 
      break; 
     case Unchanged : 
      e.CellStyle.Font = normalFont; 
      break; 
     case Added : 
      e.CellStyle.Font = boldFont; 
      break; 
     case Deleted : 
      e.CellStyle.ForeColor = Color.Red; 
      break; 
     case Modified : 
      e.CellStyle.Font = boldFont; 
      break; 
    } 
} 
+0

很好的解決方案謝謝 – pragmascript 2010-01-18 01:32:35