日期:2014-05-17  浏览次数:21007 次

DataGireView绑定DataTable,点击列标题按数值排序如何实现?
各位:
     DataGridView 绑定了一个外部数据源DataTable,其中所有列都是string类型的,但实际有些列是数字。当在DataGridView中点击列标题时,想对这些实际位数字的列按数值排序。
    如:
       学号  成绩
        3      89
        12     8
        4      56
如果不自定义排序方法,目前若对成绩排序结果是:56、8、89.不是想要的结果。

在查看了DataGrideView的相关方法后发现,网上大多以下几种回答
1. 重写SortCompare
   但此事件只在非绑定数据源时才有效,不可行;
2. 重写Sort(IComparer)
   Msdn中这么解释:只有当未设置 DataSource 属性时,此方法才有效。当您将 DataGridView 控件绑定到外部数据源时,必须使用该数据源提供的排序操作。
    因此似乎也不可行。
3.重写DataGridView.Sort (DataGridViewColumn, ListSortDirection)
   这个似乎可以,但“此方法通过比较指定列中的值来对 DataGridView 的内容进行排序。默认情况下,排序操作使用 Compare 方法并通过 DataGridViewCell.Value 属性来比较列中的单元格对。” 
    要解决数值排序,必须要对排序函数进行重写,但是不知道该怎么写,写哪个。

除了直接对DataTable这种方法外,请问高人们还是否有解?或说上述方法中可实现一种?
求高人指点!

------解决方案--------------------
你不动到后台,什么可以重新排序呢?
------解决方案--------------------
不好意思,sortOrder这边要改成dataGridViewColumnSortMode而且没有升降序排列,只是我红笔画出来的是否允许用户自己手动进行列排序。