Как запретить добавление неполных строк в мою DataGrid? - PullRequest
3 голосов
/ 16 января 2012

У меня есть DataGrid (в настоящее время версия .NET 3.5 WPFToolkit, но при необходимости я могу использовать готовую DataGrid .NET 4.0), привязанную к коллекции объектов.Три столбца в сетке данных представляют фрагменты информации, используемые в качестве ключа для получения другой информации из базы данных.Эта другая информация используется в вычислениях для заполнения других столбцов таблицы данных.

Как только пользователь вводит эти три поля и комбинация данных в этих полях существует в базе данных, строка считается действительной длядобавление в коллекцию.Пользователь также теперь может свободно редактировать другие столбцы в строке.Когда пользователь получает данные из любого другого столбца, три «ключевых» поля считаются «заблокированными» - пользователь больше не может их редактировать.Единственный способ изменить эту информацию - удалить всю строку и добавить новую строку.

1) Как лучше всего с точки зрения UX справиться с этим?Должен ли я разрешить пользователю вводить данные в любой столбец, «кэшировать» их записи, а затем все мои вычисления будут выполняться сразу после ввода «ключевых» данных?Или я должен ограничить пользователя, чтобы он сначала вводил только данные «ключа», а затем разрешил пользователю вводить данные в другие столбцы?

2) Какова стратегия (необходимые обработчики событий и т. Д.) ДляРеализовав вышесказанное в сетке данных?Как не разрешить добавление новой строки в коллекцию с привязкой данных до тех пор, пока она не будет иметь действительных данных «ключа», или разрешить добавление новой строки с ошибками проверки и каким-либо образом отследить, что пользователь может продолжитьредактировать «ключевые» столбцы частично полной строки, но не других существующих строк в сетке данных?

1 Ответ

0 голосов
/ 02 мая 2012

Это то, что я сделал для своей конкретной ситуации:

1) Лучший способ справиться с этим - предоставить пользователю максимально возможную гибкость.Это означает, что пользователь может редактировать ключевые данные при определенных условиях, но не ограничивать пользователя первым вводом ключевых данных.

2) Стратегия реализации состоит из двух частей.Сначала определите, когда использование больше не позволяет редактировать данные ключа, и добавьте стили к столбцам таблицы данных, которые переключают столбцы значений ключа в режим только для чтения на основе триггера.Во-вторых, когда данные ключа изменены, выполните всю логику за сценой, как если бы строка была удалена с использованием данных старого ключа, а затем создана с использованием данных нового ключа.Это покроет все побочные эффекты, которые должны были произойти.

...