Сортировка datagridview по столбцу с разными типами данных - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, простите, если где-то было, но гугл ничего не дает по запросу.

Задача:

Имеется datagridview, в которой имеются некоторые данные, в частности, столбец с порядковым номером 2, в котором содержатся номера квартир. Необходимо сделать сортировку по этому столбцу по возрастанию.

Условия:

Таблица заполняется программно из множества xml файлов (без всяких datasource, переделывать уже не вариант, т.к. скоро сдавать), тип string. НО есть один файл, в котором номер квартиры - это номер помещения, а он == -I(7-33);I(1-30).

Вопрос:

До появления этого самого номера помещения таблица прекрасно сортировалась методом
Листинг программы
  1. dataGridView1.Sort(dataGridView1.Columns[2], ListSortDirection.Ascending);
путем перевода string в Int32 (т.к. если сортировать в string, то он выдает сперва, например, 146, а потом 10, а потом 147). Теперь же, естественно, при переводе он выдает ошибку, а сортировать с двумя разными форматами в столбце не умеет. Помогите, пожалуйста.

Решение задачи: «Сортировка datagridview по столбцу с разными типами данных»

textual
Листинг программы
  1.         private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
  2.         {
  3.             var myColumn = 0;//номер колонки с нестандартной сортировкой
  4.             if (e.Column.Index == myColumn)
  5.             {
  6.                 var s1 = e.CellValue1.ToString();
  7.                 var s2 = e.CellValue2.ToString();
  8.                 e.SortResult = ToInt(s1).CompareTo(ToInt(s2));
  9.  
  10.                 e.Handled = true;
  11.             }
  12.         }
  13.  
  14.         private ulong ToInt(string s)
  15.         {
  16.             var num = 0ul;
  17.             foreach (Match m in Regex.Matches(s, @"\d+"))
  18.                 num = num * 1000 + ulong.Parse(m.Value);
  19.  
  20.             return num;
  21.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут