Нужны идеи для обработки комбинированного списка в сетке для импортированных данных, если имя / идентификатор неточны / недоступны - PullRequest
0 голосов
/ 08 декабря 2011

У нас есть форма, которая включает в себя много данных, в частности имя и идентификатор сотрудника.Эти данные будут введены через сетку управления.Идентификатор сотрудника будет доступен только для чтения, а у пользователя будет поле со списком для выбора или ввода имени сотрудника.

Это достаточно просто, но мы импортируем данные и используем WPF и MVVM.Поскольку мы импортируем данные, мы не можем гарантировать, что данные сотрудника будут содержать идентификатор сотрудника (это может быть новый сотрудник, не настроенный в системе). [Requirement1]: Это означает, что ComboBox для имени сотрудника должен иметь возможность отображать имя, даже если его нет в списке ItemsSource комбинированного окна, что я уже решил.

[Requirement2]: Тем не менее, у меня проблема в том, что если я выберу действительное имя из списка, я хочу, чтобы идентификатор сотрудника автоматически вводился автоматически на основе моего выбора.Если я хочу сделать это в модели представления, тогда я, возможно, должен установить свое свойство EmployeeName как KeyValuePair вместо строки (которая сейчас есть), которая не позволит мне выполнить Requirement1.Правильный?Наличие его в качестве KeyValuePair или любой другой структуры позволит мне извлечь EmployeeId из структуры и поместить его в свойство EmployeeId.

Как мне выполнить оба требования, все еще используя комбинированный список и сетку?

1 Ответ

0 голосов
/ 09 декабря 2011

Вам нужно будет подойти к этому одним из двух способов:

1) Свяжите список имен сотрудников с полем со списком, затем, когда это необходимо, получите идентификатор сотрудника из базы данных (или там, где он хранится). Я не большой поклонник такого подхода.

2) Создайте небольшой класс для хранения имени и идентификатора сотрудника, затем создайте коллекцию (список, словарь) этого класса и свяжите его со списком. Перед привязкой, если указанное имя сотрудника не существует в списке сотрудников, вставьте новый экземпляр класса в список с именем и фиктивной версией идентификатора сотрудника (0, -1). Затем вы можете связать соответствующие свойства Combo (DisplayMember, ValueMember) с соответствующими свойствами в вашем классе.

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