У меня есть строковый столбец с числами в 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;
...
Я не проверял, работает ли это, но вы получаете идея ...;)
Создайте класс вроде:
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() );