如何在winforms中的datagridview中将字符串排序为数字

我在datagridview中有数字的字符串列。它没有绑定,我想按照我使用的数字排序

colid.ValueType = typeof(int); grid.Sort(colid, ListSortDirection.Descending); 

但是像字符串一样排序,例如:

 11 12 23 7 80 81 

而预期的是

 7 11 12 23 80 81 

您可以在SortCompare事件上注册,例如:

 private void customSortCompare(object sender, DataGridViewSortCompareEventArgs e) { int a = int.Parse(e.CellValue1.ToString()), b = int.Parse(e.CellValue2.ToString()); // If the cell value is already an integer, just cast it instead of parsing e.SortResult = a.CompareTo(b); e.Handled = true; } ... yourGridview.SortCompare += customSortCompare; ... 

我没有检查是否有效,但你明白了…;)

将值赋给列时,只需转换为Int32即可

 DataGridView.Cells["example"].Value= Convert.ToInt32(text); 

它会正确排序

创建一个类,如:

 class Sort : IComparer { public int Compare(object x, object y) { return -int.Parse((string)x).CompareTo(int.Parse((string)y)); //sort descending //return int.Parse((string)x).CompareTo(int.Parse((string)y)); //sort ascending } } 

并做

 grid.Sort( new Sort() ); 

您的问题是您对字符串值进行排序。 加载列时,必须选择列中的值类型:

dt.Columns.Add(“ColumnName”,typeof(int));