Сортировка datagridview по столбцу с разными типами данных - C#
Формулировка задачи:
Доброго времени суток, простите, если где-то было, но гугл ничего не дает по запросу.
путем перевода string в Int32 (т.к. если сортировать в string, то он выдает сперва, например, 146, а потом 10, а потом 147). Теперь же, естественно, при переводе он выдает ошибку, а сортировать с двумя разными форматами в столбце не умеет. Помогите, пожалуйста.
Задача:
Имеется datagridview, в которой имеются некоторые данные, в частности, столбец с порядковым номером 2, в котором содержатся номера квартир. Необходимо сделать сортировку по этому столбцу по возрастанию.Условия:
Таблица заполняется программно из множества xml файлов (без всяких datasource, переделывать уже не вариант, т.к. скоро сдавать), тип string. НО есть один файл, в котором номер квартиры - это номер помещения, а он == -I(7-33);I(1-30).Вопрос:
До появления этого самого номера помещения таблица прекрасно сортировалась методом
Листинг программы
- dataGridView1.Sort(dataGridView1.Columns[2], ListSortDirection.Ascending);
Решение задачи: «Сортировка datagridview по столбцу с разными типами данных»
textual
Листинг программы
- private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
- {
- var myColumn = 0;//номер колонки с нестандартной сортировкой
- if (e.Column.Index == myColumn)
- {
- var s1 = e.CellValue1.ToString();
- var s2 = e.CellValue2.ToString();
- e.SortResult = ToInt(s1).CompareTo(ToInt(s2));
- e.Handled = true;
- }
- }
- private ulong ToInt(string s)
- {
- var num = 0ul;
- foreach (Match m in Regex.Matches(s, @"\d+"))
- num = num * 1000 + ulong.Parse(m.Value);
- return num;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д