vb.net - 以数字方式对datagridview列进行排序

时间:2016-03-26 08:12:57

标签: vb.net datagridview

我知道这已被问过很多次了,但我在其他大多数网页上找到的解决方案都存在问题。

我有一个datagridview列,我希望按数字排序(1,2,10而不是1,10,2) 最好我可以在网上看到,我需要将列或单元格转换为整数值类型 - 但我不知道该怎么做。

我已尝试过grid.columns(4).valuetype = typeof(System.int32),并对单个细胞进行了同样的尝试。

尝试上面总会导致“int32是'系统'中的类型,不能用作表达式”错误 - 我不确定。

数据本身是从文本文件获取的,并在添加到单元格datagrid_alltracks.Rows(shutupaboutlambda).Cells(4).Value = CInt(numstring))

时从字符串转换为整数

2 个答案:

答案 0 :(得分:0)

如果网格绑定到数据源,您可以尝试 datatable.Columns.Add("ColumnName", GetType(Integer))

否则,您可能需要在gridview上使用SortCompare事件。 See here

答案 1 :(得分:0)

您只需将DataGridView SortCompare事件设置为比较两个整数(或两个单打或两个双打)。明智的代码(将您的datagridview称为“ grid”)

Private Sub grid_SortCompare(sender as Object, E as DataGridViewSortComapreEventArgs) Handles grid.SortComPare
    e.SortResult = CInt(e.cellvalue1).CompareTo(CInt(e.cellValue2)
    e.Handled = True
End Sub

如果您要处理单变量或双变量,请使用CSng或CDbl代替CInt

    e.SortResult = CSng(e.cellvalue1).Compareto(CSng(e.CellValue2) 

如果需要,您可以进行更多的奇特排序,您基本上需要知道e.SortResult为正,负或零,然后根据该结果对单元格进行排序(正保持顺序,负反向顺序,零-匹配-什么也没做)。当前行索引和列可在e参数中找到,因此如果当前单元格匹配,还可以比较相邻列的数据)