C#

DataGrid의 ItemSource를 DataTable로 변환하는 방법

지오준 2023. 2. 21.
반응형

1. 필요성 : DataGrid의 변경값 체크용 DataTable생성에 사용할 수 있습니다.

2. 변환방법 : ItemSource에 바인딩한 클래스와 리스트형 데이터를 가지고 DataTable로 변환을 합니다.

3. 샘플코드

/// <summary>
/// DataGrid를DataTable로변환
/// </summary>
/// <typeparam name="T">클래스명</typeparam>
/// <param name="data">변환할데이터리스트</param>
/// <returns>DataTable</returns>
public static DataTable DataGridToDataTable<T>(this List<T> data)
{
    //변환테이블생성
    var properties = TypeDescriptor.GetProperties(typeof(T));
    var table = new DataTable();
    var now = DateTime.Now;
    foreach (PropertyDescriptor prop in properties)
    {
		//테이블컬럼생성
        table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
    }

    //변환할 데이터값이null이 아닌경우
    if (data != null)
    {
        foreach (T item in data)
        {
            var row = table.NewRow();

            foreach (PropertyDescriptor prop in properties)
            {
            	//컬럼별 값설정
                row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
            }
            table.Rows.Add(row);
        }
    }
    return table;
}
반응형

댓글