|
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
|
|
Сортировка DataGridView22.11.2023, 13:16. Показов 806. Ответов 9
Метки нет (Все метки)
Всем привет
Нужна помощь в правильной реализации сортировки строк. Есть словарь dictionary, в первом параметре используется ключ (некий int-овый ID), во втором параметре структура, которая будет хранить некоторые значение (название, тип, количество и т.д) Далее, есть таблица datagridview, в которую нужно выводить значения из структуры (которая находится в словаре) Пример таблицы: -------------------- Столбцы --------------------- Название | номер изделия | тип | количество Хлеб___________30_______белый_____20____ Строка с id 0 Хлеб___________15_______серый_____50____ Строка с id 1 Хлеб___________25_______черный____100___ Строка с id 2 Батон__________88_______белый______44___ Строка с id 3 Батон__________65_______белый______13___ Строка с id 4 Батон__________92_______белый______25___ Строка с id 5 Под номером изделия и есть тот самый int-овый ID (который в словаре в качестве ключа) Приходят данный, если такого ID нет в словаре, то добавляем в словарь, а затем в таблицу, когда первая строка добавляется в таблицу, она получается автоматически (насколько я понимаю) свой id строки (0), вторая строка (1) и т.д (этот получивший id я сохраняю в словарь, просто беру общее количество строк - 1) Когда приходит ID который уже есть в словаре (а значит он есть и в таблице) но с какими то изменёнными данными (например количество хлеба/батона) то я по номеру строки (который я сохранил в словарь) обращаюсь к нужному rows[id] и обновляю данные в соседних столбцах. И всё бы хорошо, но мне понадобилось сортировать таблицу по номеру изделия и по названию. Начал по номеру изделия используя функцию dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending); Вроде как данные от сортировались, но id строк не переместились, т.е я думал будет примерно так: Хлеб___________15_______серый_______50__ _____Строка с id 1 Хлеб___________25_______черный_______100 _____Строка с id 2 Хлеб___________30_______белый_______20__ _____Строка с id 0 И я тогда смогу как обычно обращаться по id строки которая у меня уже есть (с конкретным key ID в словаре) изменять нужные мне данные, но на деле оказалось не так как думал: Хлеб___________15_______серый_______50__ _____Строка с id 0 Хлеб___________25_______черный_______100 _____Строка с id 1 Хлеб___________30_______белый_______20__ _____Строка с id 2 сортировка произошла, а id строки так и остались в порядке возрастания и при изменении данных, менялись уже соседние данные... Нужна помощь, я даже не знаю как правильно сделать, сортировать данные в словаре или уже в таблице... Если сортировать строки в таблице, то нужно иметь потом возможность обращаться к конкретной строчки, что бы изменить там данные... Конечная цель такая: 1. сортировка по названию при добавлении элемента в строку, т.е если у меня в таблице уже есть две строчки хлеб и хлеб и пришел батон, что бы он был в самом низу, а если снова пришел хлеб, то он был не под батоном, а под остальным хлебом. 2. сортировка по номеру изделия, не важно хлеб или батон.
0
|
|
| 22.11.2023, 13:16 | |
|
Ответы с готовыми решениями:
9
Сортировка в DataGridView DataGridView, сортировка Сортировка в Datagridview |
|
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
|
||
| 22.11.2023, 14:32 [ТС] | ||
|
Пытаюсь сделать вот так: Dictionary<int, MyClass> Mydict = new Dictionary<int, MyClass>(); dataGridView1.DataSource = Mydict.ToArray(); dataGridView1.Columns[1].DataPropertyName = "Key"; dataGridView1.Columns[0].DataPropertyName = "Value"; НО что то не работает, выводит только key корректно.
0
|
||
|
|
||||||||||||||||||||||||||
| 22.11.2023, 15:45 | ||||||||||||||||||||||||||
Сообщение было отмечено Vladimirchy как решение
Решение
Vladimirchy, рекомендую начать так:
создай модель изделия:
Весь код главной формы
1
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
|
||
| 22.11.2023, 16:35 [ТС] | ||
|
Буду изучать. Я так понимаю, правильнее все манипуляции делать с коллекциями, а в таблицу просто выводить готовый результат ? Добавлено через 15 минут И ещё вопрос, если у меня уже есть заголовки столбцов, я пытаюсь отключить автогенерацию dataGridView1.AutoGenerateColumns = false; Но тогда у меня добавляются строки, но они пустые...
0
|
||
|
|
|||
| 22.11.2023, 17:22 | |||
|
0
|
|||
|
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
|
||
| 22.11.2023, 20:43 [ТС] | ||
|
Последний вопрос, а можно как то узнать номер строки (id строки) с помощью какого ни будь значения, ну например из моего примера: по названию или UnitNumber ? Не перебирая через цикл все строки
0
|
||
|
0 / 0 / 0
Регистрация: 14.01.2023
Сообщений: 45
|
|
| 22.11.2023, 21:53 [ТС] | |
|
0
|
|
|
|
|||||||
| 23.11.2023, 08:45 | |||||||
FirstOrDefault()? Тем более у вас есть поле с ID записи.Пример
Measures - коллекция, в которой ищем m.MeasureID - поле коллекции, по которому ищем DrawData.MeasureID - значение, по которому ищем
1
|
|||||||
| 23.11.2023, 08:45 | |
|
Помогаю со студенческими работами здесь
10
Сортировка DataGridView
сортировка datagridview
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|