2011-04-30 63 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