2012-07-05 4 views
2

DataGrid는 일부 DataTable에 바인딩됩니다. 사용자가 일부 값을 변경했습니다. 변경된 행을 색으로 표시하고 싶습니다. 나는 그것을했다. 그러나 현재 행 값이 변경되었음을 DataGrid에 알리는 방법은 무엇입니까?DataGrid를 DataTable에 바인딩 할 때 DataGrid의 행을 새로 고치는 방법은 무엇입니까?

P. 변경된 행을 나타 내기 위해 currentRow.Row.RowState에서 트리거를 사용합니다. 모든 ItemsSource를 새로 고치고 싶지 않습니다. 작업이 너무 깁니다.

답변

0

하지 최선의 결정하지만 내가 예상대로 작동합니다

dataView.ListChanged += (o, e) => 
{ 
    if (e.ListChangedType == ListChangedType.ItemChanged) 
    { 
     DataRowView row = ((DataView)o)[e.NewIndex]; 
     if(row != null) 
     { 
      MethodInfo method = typeof(DataRowView).GetMethod("RaisePropertyChangedEvent", BindingFlags.Instance | BindingFlags.NonPublic); 
      method.Invoke(row, new object[] { "Row" }); 
     } 
    } 
}; 
0

이 줄을 따라 뭔가 도움이 될 수도 있습니다 .... 그 정확한, 당신은 다른 이벤트 핸들이 호출해야 할 수도 있지만 올바른 방향으로 지점을 알려야 할 수도 있습니다!

private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
     { 
      int colIndex = e.ColumnIndex; 
      int rowIndex = e.RowIndex; 

      DataGridViewRow theRow = dgvOutstandingReports.Rows[rowIndex]; 


      theRow.DefaultCellStyle.BackColor = Color.LightYellow; 
     } 
+0

그것은 WPF에 대한 좋은 생각이 아니다. 나는 kludje하고 싶지 않아. – Rover

관련 문제