동적 데이터를 다룰 때 ExpandObject 를 사용하게됩니다.
이번에 DevExpress GridControl 를 사용하게 되었는데 Property가 있어야 바인딩이 가능한 구조라
쿼리 결과를 담기 위해서는 Dynamic 타입으로는 바인딩이 불가능했습니다.
바인딩할 데이터가 동일하면 Class 를 하나 만들어 사용하면되지만
동적데이터를 바인딩하려면 ExpandObject 를 사용해야합니다.
아래와 같이 AddProperty 함수를 만들어 Key,Value 를 인자로 받아서 처리하도록 하고
private void AddProperty(ExpandoObject expando, string propertyName, object propertyValue)
{
var expandoDic = expando as IDictionary<string,object>;
if(expandoDic.ContainsKey(propertyName))
{
expandoDic[propertyName] = propertyValue;
}
else
{
expandoDic.Add(propertyName, propertyValue);
}
}
아래처럼 사용합니다.
dynamic expando = new ExpandoObject();
AddProperty(expando, "ID", 1);
AddProperty(expando,"Name","kang");
이렇게 하면 ExpandObject 에 Property 로 ID = 1, Name = Kang 이 설정됩니다.
ObservableCollection<Object> 에 담아 DevExpress GridControl 의 DataSource 로 사용하면
데이터가 정상적으로 표시됩니다.
ObservableCollection<Object> dataList = new ObservableCollection<object>();
foreach (var keyvalue in datas)
{
dynamic expando = new ExpandoObject();
AddProperty(expando, "ID", keyvalue.key);
AddProperty(expando, "Name", keyvalue.value);
dataList.Add(expando);
}
C# ExpandoObject 객체 Property 값 알아내는 방법 (0) | 2024.02.27 |
---|---|
C# Edge Browser 열기 (0) | 2024.02.23 |
.NET 랜덤 한 X,Y 축 값 도출하기 (0) | 2024.02.18 |
TChart Legend 클릭 시 잘못된 Series Index 반환하는 버그 수정 (0) | 2024.02.16 |
TChart Legend 클릭 시 선택한 Series 강조하기 (0) | 2024.02.15 |