안녕하세요.
.NET 초보 개발자 입니다.
Devexpress GridControl, GridView 관련 질문입니다.
gridControl.DataSource에 List 데이터를 넣고
그리드 사용자 임의 정렬 후 gridView 데이터를 List 데이터에 넣을려고 합니다.
var list = gridView1.DataSource as List<Person>;
위 소스코드는 데이터 정렬과 상관없이 데이터를 받을 수 는 있지만
정렬된 데이터는 적용이 안되는걸 확인 했습니다.
아래에 예시 소스코드입니다.
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GridViewConvert
{
public partial class XtraForm1 : DevExpress.XtraEditors.XtraForm
{
public XtraForm1()
{
InitializeComponent();
gridControl1.DataSource = InitData();
}
private List<Person> InitData()
{
var list = new List<Person>()
{
new Person() {Id=1,Name="유재석",Age=51},
new Person() {Id=2,Name="강호동",Age=53},
new Person() {Id=3,Name="이수근",Age=48},
};
return list;
}
private void simpleButton1_Click(object sender, EventArgs e)
{
var list = gridView1.DataSource as List<Person>;
foreach (var item in list)
{
Console.WriteLine(item);
}
Console.WriteLine("\n");
}
}
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return string.Format($"Id:{Id}\t Name:{Name}\t Age:{Age}");
}
}
}
질문을 올리고 다시 생각하니 되네요. 여러테이블이 있어 제네릭타입 으로 코드를 만들었습니다.
public class DataConvert
{
public static List<T> ConvertDataTable<T>(GridView gv)
where T : class
{
List<T> result = new List<T>();
for (int i = 0; i < gv.RowCount; i++)
{
var data = gv.GetRow(i) as T;
result.Add(data!);
}
return result;
}
}
수고하세요!^^