비교적 간단한 질문입니다. 나는 Datagridview를 가지고 있는데, 그 모두가 통계를 표시한다. 행을 편집/추가/삭제할 필요가 없습니다. DataGridview는 List에 바인드됩니다. 내가 성취하고자하는 것은 사용자가 열을 정렬 할 수있게하는 것입니다.List에있는 Datagridview 데이터 소스 정렬 <T> 여기서 T는 익명입니다.
class Market
{
public int Location {get;set;}
public float Value {get;set;}
//...
}
class City
{
public String Name {get;set;}
//...
}
List<Market> _markets;
List<City> _cities;
//Lists are populated.
dataGridView1.DataSource = _markets.Select(market =>
new { _cities[market.Location].Name, market.Value}).ToList();
예상대로 열은 정렬 할 수 없지만 표시되는 정보는 원하는 것입니다. 내 질문에 코드를 통해 여러 번 사용됩니다 최소 복잡하고 최소한의 코드 금액을 가진 열 형식을 기반으로 DataGridView 정렬을 만드는 방법입니다.
이 응용 프로그램은보기가있는 데이터베이스를 사용하는 데 사용됩니다. 그런 다음 이러한 뷰는 DataGridView를 채 웁니다. 보기는 여전히 약하므로 가능한 해결책이 될 수있다 :
DataBase.ViewMarketValue temp = new DataBase.ViewMarketValue()
_markets.ForEach(market => temp.AddViewMarketValueRow(_cities[market.Location].Name, market.Value);
dataGridView1.DataSource = temp;
이 원하는 결과 모든 정보를 가지고있는 DataGridView하며 정렬된다. 유일한 문제는이 측면에서보기를 사용하는 것이 잘못된 것처럼 보입니다. 그래서 내가 무엇을해야하니?
아주 좋은 해결책을! 내 유일한 불만 (그리고 그것은 작은 것입니다) 그 정렬 이상적으로 빠르지 않다지만, 그것은 용납 할 수있는 지금까지 최고의 것입니다. –
리플렉션을 사용하여 속성 값을 가져 오기 때문에 속도가 느립니다. PropertyComparer 클래스를 쉽게 수정하여 생성 될 때 대리자를 생성하고 property.GetValue 대신이 위임을 사용합니다. –
@ThomasLevesque 제안을 구현하기 위해 일부 코드 스 니펫을 게시 할 수 있다면 좋을 것입니다. 감사합니다. – Esen