как отсортировать строку как число в datagridview в winforms

У меня есть строковый столбец с числами в datagridview. Это не связывается, я хотел бы отсортировать его число, мудрое, что я использовал

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

но виды как строка, например:

11
12
23
7
80
81

в то время как ожидаемый

7
11
12
23
80
81
15
задан Kate Gregory 4 February 2013 в 02:02
поделиться

2 ответа

Вы можете зарегистрироваться в событии 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;
...

Я не проверял, работает ли это, но вы получаете идея ...;)

22
ответ дан 1 December 2019 в 01:45
поделиться

Создайте класс вроде:

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() );
0
ответ дан 1 December 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: