|
4 / 4 / 0
Регистрация: 14.05.2013
Сообщений: 52
|
||||||
WPF Обновление таблицы DataGrid после его изменения используя при этом INotifyPropertyChanged25.06.2022, 14:48. Показов 4720. Ответов 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 из большой таблицы (+++) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|