|
4 / 4 / 0
Регистрация: 14.05.2013
Сообщений: 52
|
||||||
WPF Обновление таблицы DataGrid после его изменения используя при этом INotifyPropertyChanged25.06.2022, 14:48. Показов 4619. Ответов 36
Всем доброго времени суток.
Обновлял таблицу Data grid при помощи коллекции ObservableCollection, все было норм, пока послед удаления и добавления данных в таблицу не перешел к изменению отдельных колонок. После долгого копания в интернете понял, что эта коллекция вроде как не видит изменения если не использовать INotifyPropertyChanged. Пытался сам все это реализовать, но каждый раз натыкаюсь на множество ошибок. Подскажите пожалуйста в каком именно классе мне его реализовать. Вот ссылка на весь код http://https://github.com/Delpors/WpfApp2.git А вот класс где я пытался его реализовать.
0
|
||||||
| 25.06.2022, 14:48 | |
|
Ответы с готовыми решениями:
36
Обновление DataGrid после изменения данных в запросе Как осуществить вывод таблицы в DataGrid и обновление таблицы в БД после закрытия окна программы Обновление DataSet после изменения структуры таблицы |
|
4 / 4 / 0
Регистрация: 14.05.2013
Сообщений: 52
|
|||||||
| 02.07.2022, 11:53 [ТС] | |||||||
0
|
|||||||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 02.07.2022, 11:59 | |
|
delpors, этот код, если честно, вообще полная трешанина.
Но, если мы на это не будем обращать внимания, то да. Стоят два цирюльника, разговаривают. Вы подходите к одному и говорите "передай письмо второму". Почему бы самому сразу не передать письмо второму, если Вы находитесь там же? Какое отношение к этому письму имеет другой джентльмен? Никакого.
1
|
|
|
4 / 4 / 0
Регистрация: 14.05.2013
Сообщений: 52
|
||
| 02.07.2022, 12:08 [ТС] | ||
|
Не думал, что самообучение будет таким сложным...
0
|
||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
||||||||||||||||||||||||||
| 02.07.2022, 13:14 | ||||||||||||||||||||||||||
|
Для начала: сделайте возможность нормального взаимодействия с Вашей БД.
Использовать AppContext, как таковой, напряму нельзя. Он должен быть инкапсулирован. Пример: https://metanit.com/sharp/articles/mvc/11.php Отталкиваясь от этого примера я сделал SQLStudentsRepository: Кликните здесь для просмотра всего текста
Далее я сделал очень костыльный подход, но если попробую усложнить, боюсь перегнуть.
Когда я добавил в бд нового студента, я проверяю какой Id ему присвоился и возвращаю его, как результат добавления. Это очень потоконебезопасно, в реалях же такой подход не используется, ибо если я добавлю одновременно двух студентов -- у меня перепутаются Id-шники, но для теста -- достаточно. Кастально обновления -- Update. Когда Вы в DataGrid измените Name, или Surname студента, у Вас сработает OnPropertyChanged метод. Тут я сделал костыль и прямо там вызвал метод Update, в реалях -- это неприемлимо и так делать нельзя, но я решил не усложнять. Добавлено через 6 минут По хорошему StudentViewModel ничего не должна знать ни о каких репозиториях. Также есть такая проблема: каждый раз, когда Вы будете создавать объект StudentViewModel, Вам придётся его заполнить какими-то данным, и из-за этого у Вас будет срабатывать метод Update. Например в этой строке:
2
|
||||||||||||||||||||||||||
|
4 / 4 / 0
Регистрация: 14.05.2013
Сообщений: 52
|
|
| 02.07.2022, 13:18 [ТС] | |
|
limeniye, Спасибо за развернутый ответ, не думал что тут будут возиться с новичками, попытаюсь разобраться.
0
|
|
| 02.07.2022, 13:24 | |
|
Не по теме:
0
|
|
|
Модератор
|
||
| 02.07.2022, 15:42 | ||
|
1) Основной язык WPF - это XAML. Вообще, нежелательно работать с UI элементами на Шарпе. Очень часто это требует значительно больше знаний, опыта и кода. Начинающим же, вообще, следует забыть про наличие Code Behind и никогда даже просто не открывать файлы "*.xaml.cs". 2) Основной способ задания значений свойствам UI элементов - это установка них привязки (Binding) по которой они сами будут получать значения из свойств источников. По сути, если вам не нужны привязки, то вам не нужен и WPF - используйте Формы. 3)Само Решение с GUI на WPF практически всегда строится по паттерну MVVM. Решение построенное иначе с вероятностью 99.9% будет горой диких костылей, которая может развалиться "от любого чиха".
2
|
||
|
4 / 4 / 0
Регистрация: 14.05.2013
Сообщений: 52
|
||
| 02.07.2022, 20:33 [ТС] | ||
|
1
|
||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 02.07.2022, 20:37 | |
|
1
|
|
|
4 / 4 / 0
Регистрация: 14.05.2013
Сообщений: 52
|
|
| 02.07.2022, 20:38 [ТС] | |
|
0
|
|
|
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
|
|
| 03.07.2022, 01:42 | |
|
delpors, в там же разе можно было просто делать invalidate и не надо визиблы всякие менять. Но это точно не mvvm, хотя некоторые и там так же делают иногда.
0
|
|
|
|
||
| 04.07.2022, 15:48 | ||
Student должен поддерживать INPC - вот и весь ответ...ObservableCollection<T> поддерживает оповещения только для изменения коллекции (Add, Remove, Clear).
0
|
||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 04.07.2022, 16:13 | |
|
Andrey-MSK, Что-то Вы намудрили, по-моему. Разве в коллекции поля́?
0
|
|
|
|
|||
| 04.07.2022, 16:23 | |||
![]() Добавлено через 3 минуты
0
|
|||
|
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
|
|
| 04.07.2022, 16:44 | |
|
Andrey-MSK, сейчас Вы сами запутались
![]() Это не то и не другое. Сам сформулировать боюсь, вдруг неправильно. Возможно подскажет kolorotur. Из личного интереса — буду благодарен. Дискуссия началась тут Обновление таблицы DataGrid после его изменения используя при этом INotifyPropertyChanged
0
|
|
|
|
||||||
| 12.07.2022, 17:12 | ||||||
|
delpors, Как вариант (чёт я забыл про этот способ совсем), если не хотите в базовые классы включать INPC, можно делать вот так
0
|
||||||
|
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
|
|||||||||||
| 14.07.2022, 12:04 | |||||||||||
|
должно быть примерно как то так, если уж вы не используете MVVM не нужно пересоздавать ObservableCollection она сама уведомляет если что то добавилось или удалилось.
AddEmployee
Employees
0
|
|||||||||||
| 14.07.2022, 12:04 | |
|
DataGrid+ObjectDataProvider+DataTable после изменения источника обновить DataGrid DataGrid. Как его заполнить в этом случае? не могу отобразить изменения в DataGrid на C# используя старые навыки
Быстрое обновление DataGrid из большой таблицы (+++) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
По ссылке 403. Не очень информативно такую ссылку постить.
Запись от Usaga размещена Сегодня в 06:46 . . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|