Стартовая страница › Форумы › Разработка и интеграция › Интерфейс
- В этой теме 30 ответов, 2 участника, последнее обновление 2 года, 4 месяца назад сделано manjey73.
-
АвторСообщения
-
24.11.2021 в 15:57 #21296MikhailМодератор
Если плоский класс реализует интерфейс INotifyPropertyChanged, то когда грид меняет в нём данные, в плоском классе будут срабатывать определённые методы или события, на которые можно поставить изменение данных в исходном классе.
24.11.2021 в 17:05 #21297manjey73УчастникПроблема заключается в том, что класс представляет из себя List классов (у которых есть вложенные свойства).
И как в таком случае сделать плоский класс чтобы так же это был список классов ?
Не предлагайте изменить XML, не я его придумал. А прикручивать всякие INotifer и так далее не хватает знаний, не говоря уже об опыте.
25.11.2021 в 15:45 #21302MikhailМодераторОсновные идеи я уже написал: либо изменять пользовательский интерфейс, либо делать плоский класс-переходник. Реализация за Вами.
25.11.2021 в 20:57 #21304manjey73УчастникТак мне в этом и нужна помощь, как сделать плоский класс, который меня устроит не проблема, а вот как сделать список плоских классов относительно списка классов с вложением. И главное как между ними создать связь, чтобы изменения одного изменяло и второй и наоборот. Толковых примеров не нахожу вообще…
26.11.2021 в 16:01 #21310MikhailМодераторЕсли бы у меня был готовый пример, я бы поделился. Но пока не доводилось так делать.
09.12.2021 в 15:36 #21339manjey73УчастникСделал костыль в виде DataContractSerializer поверх XmlSerializer
Не понимаю, почему сразу нельзя добавить функционал в XmlSerializer по аналогии, NET то шагает дальше….
09.12.2021 в 15:50 #21340MikhailМодераторКакая общая идея решения проблемы получилась?
09.12.2021 в 16:21 #21341manjey73УчастникКод сериализации, который у меня в ScadaCommFunc настроен на определенные ветки оригинального XML. Оно умеет пропускать те ветки, под которые я не создавал классы.
DataContractSerializer почему-то валится с ошибками при попытке чтения оригинального xml. Хотя если им сериализовать, то свое он потом десериализует нормально… Не разобрался с этим почему так. И таки он нифига не умеет работать с XML Атрибутами, упорно их делает Элементами.
В общем я сделал костыль в виде Сериализации с вызовом callback [OnSerialising] c вытягиванием из вложенного класса полей и последующей Десериализацией через MemoryStream. И потом это подсовываю в datagridview.
Осталось разобраться как редактировать datagridview с редактированием данных класса, добавить фильтрацию и т.д.
10.12.2021 в 12:56 #21344manjey73УчастникВ общем каменный цветок не срастается. Если прогнать сериализацию и десериализацию через память, то теряется связь bindingsource с классом. Такая вот фигня…
12.12.2021 в 19:28 #21349manjey73УчастникПо вытягиванию переменных из класса вопрос решил. Собственно при помощи INotifyPropertyChanged но без создания плоского класса, а все в том же.
Надо теперь разобраться как управлять классом из datagridview — удаление, добавление, вставка, перемещение строк…..
С интерфейсом я вообще пока не в ладах… даже не понимаю с чего начинать.
Если есть примеры в коде Scada, было бы неплохо посмотреть…
13.12.2021 в 12:22 #21352MikhailМодераторС коллекциями объектов DataGridView работает автоматически. Примеры, которые есть, это Администратор и Редактор таблиц.
13.12.2021 в 12:43 #21356manjey73УчастникДа не работает он автоматически. Я удаляю строку, делаю запись, а строка никуда не удалилась. Не понимаю, почему, так как вроде связано через BindingSource.
Где-то кому-то видимо надо сказать, раз в DGV удалил, удали и там.Но редактирует исправно, то есть изменение текстового поля работает.
14.12.2021 в 16:45 #21362MikhailМодераторНо в Редакторе таблиц удаление отлавливается. В качестве BindingSource.DataSource используется List<>
14.12.2021 в 16:51 #21363manjey73УчастникКак оказалось не все так просто… как хотелось бы…
Либо создавать события и все отлавливать и постоянно обновлять DataSource — путь в лоб и много кода, либо…. нашел тут одно решение, но еще не проверял, только разбираюсь.Но основная задача побеждена — вытащить переменную вложенного класса в основной, чтобы увидеть ее в DataGridView и иметь возможность редактировать.
А покажите где смотреть как отлавливается в Редакторе ?
- Этот ответ был изменен 2 года, 4 месяца назад от manjey73.
15.12.2021 в 15:56 #21365MikhailМодератор -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.