2016-07-31 2 views
0

Datagridview (dataGridView1)가 있고 데이터 소스가 목록 (Bets)입니다. 나는 그것을 오름차순 열 값 (odd1)으로 주문하고 싶습니다. 어떻게 할 수 있니?Datagridview를 데이터 소스 목록으로 정렬

편집 : 아마 내가 datagridview를 채우기 전에 목록을 주문해야합니까? 어떠한 제안?

EDIT2 : 해결책이 있지만 숫자가 잘못되었습니다. 그림을 확인 : 나는 10.57 2.00 instea을 가지고 싶습니다

enter image description here

1.99 후. 내가 어떻게 해?

EDIT3 :이 내 클래스의 일부는 다음과 같습니다

공공 문자열 { 의 get {반환 odd1 (Odds.Count> = 3)? 확율 [0] : "오류"; } 집합 {if (Odds.Count> = 3) 확률 [0] = 값; } }

public string oddX 
{ 
    get { return (Odds.Count >= 3) ? Odds[1] : "error"; } 
    set { if (Odds.Count >= 3) Odds[1] = value; } 
} 

public string odd2 
{ 
    get { return (Odds.Count >= 3) ? Odds[2] : "error"; } 
    set { if (Odds.Count >= 3) Odds[2] = value; } 
} 
+0

나는 보통의 추가 라인을 보는 내 모든 데이터 그리드에이에 압정 : 새 목록을 만들지 않고 정렬

private decimal ConvertFromString(string str) { decimal val = decimal.MaxValue; if (decimal.TryParse(str, out val)) return val; else return decimal.MaxValue; } 

또는 현재 위치에서 :

list = list.OrderBy(x=> ConvertFromString(x.odd1)).ToList(); 

이 방법을 정의 그리고 정말 좋은 기본 기능을 제공합니다. http://www.codeproject.com/Articles/33786/DataGridView-Filter-Popup –

+0

알겠습니다. 감사합니다. 어쨌든 누군가가 나에게 해결책을 제안 할 수 있기를 바랍니다. 감사합니다. – Marci

+0

데이터 소스로 지정하기 전에 해당 필드로 목록을 정렬하기 전에 주문하기 만하면됩니다. –

답변

2

당신은 단순히 GRIDVIEW의 데이터 소스를 설정하기 전에 Linq를 사용할 수 있습니다 :

편집 : odd1의 유형이 문자열이기 때문에, 당신이 원하는 결과를 얻을 수있는 숫자로 변환 할 필요가 . 모든 숫자가 유효하지 않기 때문에 원하는 결과를 얻으려면 몇 가지 검사를해야합니다.

list.Sort((x, y) => (int)(Decimal.Parse(x.odd1) - Decimal.Parse(y.odd1))); 
+0

감사합니다.하지만 약간의 문제가 있습니다. 내 질문에 내 edit2 확인하십시오 – Marci

+0

@ Marci odd1의 형식은 문자열이며 소수가 아니기 때문입니다. 편집 된 답변을 확인하십시오. – user3185569

+0

이 오류가 발생했습니다 : 입력 문자열의 형식이 올바르지 않습니다. – Marci

관련 문제