Сортировка 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д