2016-07-31 1 views
0

私はDataGridViewの(dataGridView1)を持っており、データソースは、リスト(賭け)です。私は列の値Ascending(odd1)でそれを注文したいと思います。どうすればいいですか?ソートDataGridViewのリスト

EDIT:おそらく私はdatagridviewを満たす前にリストを注文すべきでしょうか?なにか提案を?

EDIT2:私は解決策を得ましたが、数字は間違っています。写真を確認してください:私は10.57の2.00 insteaを持っているしたいと思います

enter image description here

1.99後。どうすればいいですか?

EDIT3:これは私のクラスの一部です: { のget {リターン(Odds.Count> = 3)ODD1

公共の文字列?オッズ[0]: "エラー"; } set {if(Odds.Count> = 3)奇数[0] =値; } }

あなたは単にGridViewのデータソースを設定する前に、LINQを使用することができます
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

編集: ODD1の型が文字列であるので、あなたが望む結果を得るために数に変換する必要があります。すべての数値が有効であるわけではないので、希望の結果を得るためにいくつかのチェックを行う必要があります。

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

問題なく動作していますが、少し問題があります。私の質問で私のedit2を確認してください。 – Marci

+0

@Marciこれはodd1の型が文字列で小数点ではないからです。編集した回答を確認してください。 – user3185569

+0

このエラーが発生しました:入力文字列が正しい書式ではありません – Marci

関連する問題