2012-09-28 3 views
1

내 사용자가 DataTable에 바인딩 된 DataGridView에서 데이터를 추가/편집/삭제할 수 있도록하고 있습니다. 그건 모두 잘 작동합니다. 데이터가 다시 정상적으로 데이터베이스로 업데이트됩니다. 그러나 DataTable에 CreatedOn 및 CreatedBy 같은 DataGridView에 표시하지 않으려는 일부 필드가 있습니다. 데이터 어댑터로 업데이트되기 전에 행의 상태를 기반으로이 열에 값을 작성해야합니다. 이 경우 데이터 테이블에 TableNewRow 및 RowChanged에 대한 이벤트 처리기를 연결하고 데이터 어댑터가 업데이트되고 AcceptChanges가 발생하기 전에 행 열을 조작해야합니까?DataTable 이벤트 및 행 상태

아무쪼록 고맙습니다.

라이언

답변

1

이것은 내가 알아 낸 것입니다. 데이터 액세스 클래스에 데이터 테이블을 다시 전달한 후에는 테이블의 행을 반복하고 DataRowState를 확인합니다. DataRowState를 기반으로 열 값을 설정합니다.

foreach (DataRow row in dt.Rows) 
      { 
      if (row.RowState == DataRowState.Added) 
       { 
       row["CreatedOn"] = DateTime.Now; 
       row["CreatedBy"] = GlobalProp.UserName; 
       row["ModifiedOn"] = DateTime.Now; 
       row["ModifiedBy"] = GlobalProp.UserName; 
       } 
      else if (row.RowState == DataRowState.Modified) 
       { 
       row["ModifiedOn"] = DateTime.Now; 
       row["ModifiedBy"] = GlobalProp.UserName; 
       } 
      } 

다른 사람을 도울 희망!

g