我知道这已被问过很多次了,但我在其他大多数网页上找到的解决方案都存在问题。
我有一个datagridview列,我希望按数字排序(1,2,10而不是1,10,2) 最好我可以在网上看到,我需要将列或单元格转换为整数值类型 - 但我不知道该怎么做。
我已尝试过grid.columns(4).valuetype = typeof(System.int32)
,并对单个细胞进行了同样的尝试。
尝试上面总会导致“int32是'系统'中的类型,不能用作表达式”错误 - 我不确定。
数据本身是从文本文件获取的,并在添加到单元格datagrid_alltracks.Rows(shutupaboutlambda).Cells(4).Value = CInt(numstring))
答案 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参数中找到,因此如果当前单元格匹配,还可以比较相邻列的数据)