반응형
데이터가 있는 DataTable1 이 있고,
데이터 그리드에 바인딩 되어있는 DataTable2 가 있을 때,
DataTable1 을 DataTable2 로 복사하면서 데이터그리드에도 반영되도록 하기위한 소스 예제 입니다.
DataTable gv_dtScan = new DataTable();
// 컬럼 추가
gv_dtScan.Columns.Add("userName");
gv_dtScan.Columns.Add("userNumber");
// 데이터 추가
gv_dtScan.Rows.Add("bryan", "101011");
gv_dtScan.Rows.Add("json", "101012");
gv_dtScan.Rows.Add("kevin", "101013");
Console.WriteLine("gv_dtScan rows count = " + gv_dtScan.Rows.Count);
// 데이터 그리드에 바인딩 할 데이터 테이블.
DataTable gv_dtReady1 = new DataTable();
gv_dtReady1 = gv_dtScan.Clone(); // 구조만 복사한다. (컬럼, not row)
// 그리드에 바인딩 시킨다.
dataGridView1.DataSource = gv_dtReady1;
gv_dtReady1 = gv_dtScan.Copy();
//gv_dtScan.AsEnumerable().CopyToDataTable(gv_dtReady1, LoadOption.Upsert);
Console.WriteLine("gv_dtReady1 rows count = " + gv_dtReady1.Rows.Count);
위 소스의 19번째 줄에서 처럼 DataTable.Copy() 를 사용하면 결과는 아래와 같습니다.
데이터 그리드에 바인딩이 깨졌습니다.
gv_dtReady1 에는 데이터가 있는데 말이죠.
그렇다면 데이터 그리드뷰에 바로 반영되게 하려면 아래와 같이 하면 됩니다.
//gv_dtReady1 = gv_dtScan.Copy();
gv_dtScan.AsEnumerable().CopyToDataTable(gv_dtReady1, LoadOption.Upsert);
결과는?
잘나옵니다.
728x90
반응형
'C# 기술' 카테고리의 다른 글
[WinForm] Visual Studio 2019 에서 mdb 사용하기 #LocalDB (0) | 2020.11.03 |
---|---|
[C#] C# 으로 크롤링 하기 C# Selenium Crawling (0) | 2020.10.17 |
folder 권한 주며 생성하기 Directory security (0) | 2019.02.09 |
System.InvalidProgramException JIT Compiler encountered an internal limitation (0) | 2019.02.09 |
url의 파일을 다운로드하여 실행하기. WebClient (0) | 2019.02.09 |
댓글