2017-03-02 4 views
0

私は実行時に価格が設定されたDataGridView列を持つWinFormsアプリケーションを持っています。価格は文字列データ型です。C#.net DataGridView列を10進数で並べ替え

私が使用してこの列をソートする場合:

£10350
£11294
£8999
£9050
£9099
£:

dgvDealerPrices.Sort(colPrice, ListSortDirection.Ascending); 

をそれはそうのような価格をソート9,099
£9,149
£9199
£9,199.99
£9,200
£9299
£9,457.31
£9899
£9994
明らか

それが文字列のソートされているため。どのようにして価格を正しく並べ替えることができますか?つまり小数点以下の文字列を維持している。私はSortCompareプロパティを使って遊んでいますが、動作させることができませんでした。

+1

可能な複製(http://stackoverflow.com/questions/2674670/how-to-sort [リサイズでのDataGridView内数として文字列をソートする方法] -string-as-number-in-datagridview-in-winforms) – Reniuz

+0

ボタンを使用してソートしていますか? – Berkay

+0

@Berkay DataGridViewにデータが読み込まれた後にプログラム的に –

答えて

2

あなた自身の比較子を使用することができます。

dgvDealerPrices.Sort(new PriceComparer()); 

class PriceComparer : IComparer 
{ 
    public int Compare(object x, object y) 
    { 
     var rowX = (DataGridViewRow)x; 
     var rowY = (DataGridViewRow)y; 
     var strX = (string)rowX.Cells["colPrice"].Value; 
     var strY = (string)rowY.Cells["colPrice"].Value; 
     return Decimal.Compare(Decimal.Parse(strX.Replace("£", "")), Decimal.Parse(strY.Replace("£", ""))); 
    } 
} 
+0

凡例!それをちょっと微調整し、それは治療にも役立ちます! –

+1

私は@ TomCarrollを手伝ってうれしいです:) – MKoperski

関連する問題