Как избежать обновления, когда записи формы не изменены - PullRequest
0 голосов
/ 23 января 2012

В настоящее время в моем приложении, по щелчку строки сетки, я заполняю элемент управления страницы записями строки сетки.У меня есть кнопка ОБНОВИТЬ, чтобы сохранить изменения.Но даже если не изменять какие-либо контрольные значения и нажимать кнопку «Обновить», обновление будет выполняться с теми же значениями.это вызывает запись в таблицу журнала.

Как сделать так, чтобы форма вызывала обновление, только когда значения элементов управления отличаются от того, что загружается в них, когда я нажимаю сетку.* ОБНОВЛЕНИЕ: Приложение не использует никаких шаблонов, таких как MVVM.структура, которой следуют, очень тонкая, чтобы выигрывать формы, кроме пользовательского интерфейса.Для взаимодействия с БД ADO.net.Он был построен уже тогда, когда я присоединился к этому проекту, и даже я новичок в wpf.

Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Я думаю, что вам нужно выполнить отслеживание изменений для сущностей, отображаемых в сетке. Всякий раз, когда выполняется обновление, вы проверяете состояние сущностей и обновляете только те сущности, где это необходимо. По сути, вам нужно перехватить на уровне установщиков свойств, чтобы отслеживать изменения в сущности. думать о:

  1. Использование базового класса, который имеет некоторые функции для отслеживания состояния объекта. Очень просто: логическое значение имеет измененное или более «сложное» перечисление с добавлением, изменением и удалением или что-то в этом роде.
  2. Извлечение других сущностей из этого базового класса
  3. Работа с общими свойствами и частными вспомогательными полями для перехвата изменений свойств
  4. Когда выполняются модификации свойств, сохраняйте информацию в логическом или Enum базовом классе
  5. Когда обновление инициируется пользовательским циклом по объектам, представленным в таблице, выбирайте те, у которых есть изменения, и отправляйте их в базу данных.

Некоторые полезные теории об этом могут быть:

Изменение отслеживания на объектах бизнеса

Использование свойств Руководство по программированию в C #

ADO.NET Самостоятельно отслеживаемые объекты

Я не знаю из вашего вопроса, насколько тесно связана связь между пользовательским интерфейсом и базой данных (ADO.NET DataTables или около того ...). Идея, представленная выше, требует некоторой «развязки» вещей. Но он является хорошей основой для дополнительных функций в вашем приложении и может дать вам некоторую простоту работы, четкую структуру, улучшенное обслуживание и может повысить производительность.

0 голосов
/ 23 января 2012

Я полагаю, что самый простой способ сделать это - добавить обработчик к элементам управления, которые используются для получения пользовательского ввода, который установит некоторое логическое свойство, например RowWasEdited, чтобы правда. Затем проверьте это свойство в событии нажатия кнопки UPDATE, выполните необходимые действия и установите для него значение false.

Но я уверен, что есть что-то более элегантное, чем это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...