Использование флажков для выбора элементов - PullRequest
1 голос
/ 02 мая 2011

Я создаю приложение Silverlight. Мое требование состоит в том, чтобы пользователи выбирали ряд умений, применимых к ним, из большого списка умений.

Таблицы: Candidate => CandidateSkills; SkillsCategories => Навыки. Я думаю, что схема не требует пояснений. Внешний интерфейс покажет все навыки (сгруппированные по разным категориям), и когда кандидат входит в систему, в флажках будут отображаться только его выбранные навыки. Довольно просто.

Мой вопрос: перенести ли все сущности Skill в интерфейс, а затем получить сущности CandidateSkill, пройти через них и установить соответствующие флажки или это более простой / лучший способ?

Спасибо

1 Ответ

1 голос
/ 02 мая 2011

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

Вы можете создать набор объектов модели представления, просто соединив набор всех навыков с навыками отдельного кандидата и установив IsSelected для результата ненулевого теста на навыке кандидата.

Затем вы можете привязать напрямую к ViewModel.

Однажды у меня была похожая ситуация (Пользователи на Разрешения вместо Кандидатов на Навыки), и я использовал этот ресурс в качестве отправной точки. Надеюсь, это поможет.

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

Удачи!

Комментарии к обсуждению

Вот процедура псевдо-LINQ, создающая модели представлений с помощью двух вызовов базы данных:

var userskills = database.CandidateSkills
                       .Where(cs => cs.UserId == someUserId)
                       .Select(cs => cs.SkillId)
                       .ToList();
var skills = from s in database.Skills
             select new CandidateSkillViewModel()
             {
                 Text = s.SkillName,
                 IsSelected = userskills.Contains(s.SkillId),
                 Value = s.SkillId
             };
mylist.ItemsSource = skills;

Это даст вам привязываемый источник данных. В конечном итоге, используя этот шаблон, вам придется переводить выделенные / отмененные выделения во вставки / удаления вручную. Для меня я делаю это в обработчике для нажатия кнопки. Я получаю новый набор навыков кандидата, перебираю элементы списка и вставляю / удаляю экземпляры CandidateSkill по мере необходимости.

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

Надеюсь, это поможет немного больше.

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