Разработка типичного GUI редактирования сущностей [windows desktop]
От: Junior1993  
Дата: 05.03.13 19:48
Оценка:
У меня мало опыта в разработке GUI для windows desktop приложений, но сейчас на проекте встала такая задача.

Задача:
Есть какая-то сущность (допустим, Клиент, Поставщик и т.д.) и нужно создать интерфейс для создания/редактирования и удаления этих сущностей.

Мне видится 3 основных варианта решения:

1) В простых случаях задачу можно решить обычным гридом:



Т.е. воркфлоу такой: при нажатии Add добавляется пустая строка в грид. При нажатии Delete у пользователя спрашивается точно ли он хочет удалить выделенный в гриде экземпляр сущности. При нажатии Save сохраняются все что там пользователь наредактировал/наудалял. При нажатии Close форма закрывается предварительно спросив нужно ли сохранить изменения.

Минус — имхо такое подходит только для простейших сущностей. Редактировать в гриде что-то сложное имхо неудобно ни пользователю ни программисту (в плане реализации).


2) Если у нас что-то более сложное, то возможен такой вариант:



Жмем Add — появляется модальная форма для ввода информации о новом экземпляре сущности. При нажатии OK — валидация и если все ок, то добавление в грид. При двойном клике по строке в гриде (ну можно еще кнопку Edit добавить в принципе) появляется та же модальная форма, но уже в режиме редактирования.

Минус — на каждую сущность приходится делать минимум 2 формы.


3) Еще такой вот вариант вижу:



Грид тут работает только в режиме отображения. При фокусе на какой-либо строке грида, заполняются поля над гридом и в них можно изменить данные. При нажатии Add создается новый объект, добавляется в datasource грида, фокусируется в гриде, срабатывает байндинг, вверху поля очищаются, курсор перемещается на первое поле.

Минусов вроде не вижу, вроде неплохой вариант, хотя я такое почему-то мало где видел.


Теперь вопросы к людям с опытом в проектировании пользовательского интерфейса и юзабилити:

— Какой вариант обычно используете вы? Может другой (не представленный выше)?
— Если можно, то вкратце о релизации (dataset/custom business objects/binding и т.д.). У меня в проекте .NET Windows Forms.
— Какие недостатки вы заметили в приведенных выше вариантах?
— Посоветуете что-то почитать по теме?

Спасибо за помощь.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.