티스토리 뷰

DataTable dt = (DataTable)DataGridView1.DataSource(); 

이런식으로 데이터를 형변환해서 받아오려고 하면 

될 때도 있고 안 될 때도 있다.

 

안 되는 이유는 해당 DataGridView가 DataRelation이 걸려 있는 경우다.

이게 왜 그 경우에는 안 되는 지 몰라도 C# 내부 구조가 그렇게 잡혀 있는 듯하다.

 

이 경우엔 반복문을 돌며 데이터를 직접 하나씩 담는 그냥 메소드를 하나 만들어서 담아 오는 수 밖에 없다.

 

private DataTable setDataTable(DataGridView dgv){

  DataTable dt = new DataTable(); // 담을 객체
  
  for(int i=0; i< dgv.Columns.Count; i++){
 
	dt.Columns.Add(dgv.Columns[i].Name, dgv.Columns[i].ValueType);
    
  }//컬럼 생성
  
  
  for(int i=0; i< dgv.Rows.Count; i++){
 
 	DataRow dr = dt.NewRow();
    
 	for(int i=0; i< dt.Columns.Count; i++){
    
 		dr[i] = dgv.Cells[i].Value;
        
    }
    dt.Rows.Add(dr);
    
  } //데이터 삽입

	return dt;
}

뭐, 에디터가 없어서 검증은 안 해봤는데 대략 이런 식으로 메소드 만들고 변수 던져주면서 리턴 받으면 된다. 

이건 구글링 해보면 나오는 내용이고 코드 스타일은 정형화된 게 아니니까 각자 알아서 하는 걸로... 

댓글
공지사항
최근에 올라온 글