Software Develop/문제해결

[C#] DataGrid로 DataTable 출력시 일부 cell이 없어지는 경우

jaywapp 2023. 1. 30. 15:21

배경

DataGrid는 ItemsSource로 DataTable을 받아 아주 편리하게 Table을 화면에 나타내준다.

이를 이용하여 파일을 읽고 파일을 DataTable로 만들어 DataGrid를 통해 화면에 나타내는 기능을 개발하고 적용하였다. 
잘 적용되었으리라 생각하고 일상을 지내던 와중에 몇몇 cell의 내용이 누락되고 있다는 것을 알게 되었다.

원인

먼저 아래와 같이 원인을 파악하고자 했다.

 

1. 파일을 읽어서 생성된 데이터가 정상적인가?

2. 정상 데이터를 통해 만들어낸 DataTable의 내용이 정상인가? (Column, Row, Cell)

 

먼저, 파일을 읽는 모듈을 살펴보았다. 정상적으로 읽어오고 정상적으로 객체를 생성하고 있었다.

그 다음으로 DataTable을 만들어 출력되지 않는 cell의 정보를 열어보았다. 이 또한 물론 정상적으로 생성되었다.

 

그렇다면 DataGrid에서 DataTable을 출력하는 것에 있어서 발생하는 문제라고 유추했다. 하지만 내부코드를 볼 수도 없고 여러 구글링에도 해답은 나오지 않았다.

 

다시 처음 단계인 파일부터 살펴보던 순간, 정상 출력되지 않은 cell의 공통점을 찾았다.

해당 cell의 Column 이름에 특수문자가 포함되어 있었다. [Ref.], [S/N]와 같이 몇몇의 기호가 Column 이름에 포함되어 있었고 그 Column에 포함된 Cell의 경우는 데이터를 불러오지 못했다.

 

아마, DataGrid가 Cell을 출력할 때, ColumnName을 통해 접근하는데 특수 문자의 정보를 다루지 못해 생기는 오류라고 생각했다.

 

해결

해결 방법은 두 가지가 있을 것이다.

 

1. DataGrid에서 특수 문자를 다룰 수 있도록 하는 방법

2. DataColumn에서 특수 문자를 제외하는 방법

 

사실 첫 번째 방법으로 해결하려고 하였으나 아직 방법을 찾지 못했다. 데드라인이 다가오므로 두 번째 방법을 통해 해결하고자 한다.

 

(첫 번째 해결방법을 아시는 분은 댓글로 알려주시면 감사하겠습니다.)