2011-04-30 98 views
0

我有一個名爲DGV的DataGridView,我試圖使用排序功能使用以編程的方式第一個單元格進行排序:排序的DataGridView細胞編程方式

DGV.Sort(Rang, System.ComponentModel.ListSortDirection.Descending); 

但輸出我有這個:

1,10,100,11,12,...,19,2,20,21,...

我已經設置穰的SortMode小區到程序化,但是我有總是這個輸出。

有什麼問題? !

謝謝。

回答

2

似乎是基於的地方排序值,這是如何對string數據類型進行排序。您需要確保您排序的列是int

編輯: 如果您要嘗試解析您的字符串值,我建議使用TryParse()方法。這是一個什麼樣的的Comparer 可能看起來像一個例子:

int Compare (object obj1, object obj2 ) 
    { 
     IComparer _comparer = Comparer.Default; 
     int val1, val2; 

     if (!Int32.TryParse (obj1.ToString (), out val1)) 
      return -1; 

     if (!Int32.TryParse (obj2.ToString (), out val2)) 
      return -1; 

     return _comparer.Compare (val1, val2); 
    } 
+0

是的,他們是字符串bucause我從一個文件中使用DGV.Rows.Add加入他們(字[0]);我從 text = sInputLine; string [] words = text.Split(delimiterChars); – 2011-04-30 14:12:00

+0

@dotNet:好吧,那麼你會得到正確的結果。如果你想讓DGV進行數字排序,那麼你需要將int與int進行比較。 – IAbstract 2011-04-30 14:15:28

+1

是的真的謝謝,我應該做DGV.Rows.Add(int.Parse(words [0])); – 2011-04-30 14:16:11