Language/C#

[리스트로 바인딩 된 DataGridview]

비비이잉 2022. 7. 5. 13:09
반응형

DataTable로 바인딩이 되어있으면 헤더쪽을 클릭하면 default설정으로 화살표(arrow)가 나오고, 자동으로 내림차순 , 오름차순 정렬이 된다. 리스트로 바인딩이 되어있는 DataGridView의 경우, 자동 내림차순 오름차순 정렬이 되지 않기 때문에 List형태를 DataTable형태로 변환해줘야 한다.

 

public DataTable ToDataTable<T>(List<T> items)
{
    DataTable dataTable = new DataTable(typeof(T).Name);
    PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
    foreach (PropertyInfo prop in Props)
    {
        dataTable.Columns.Add(prop.Name);
    }
    foreach (T item in items)
    {
        var values = new object[Props.Length];
        for (int i = 0; i < Props.Length; i++)
        {
            values[i] = Props[i].GetValue(item, null);
        }
        dataTable.Rows.Add(values);
    }
    return dataTable;
}

 

반응형