2016-02-15 5 views
0

У меня есть следующий код, чтобы заполнить выпадающий с содержанием общего списка, пытаясь использовать конкатенацию FirstName и LastName, как DisplayMember выпадающего списка в:Как я могу объединить двух членов класса в совместное отображение DisplayMember?

private void PopulateStudentsComboBox() 
{ 
    if (System.IO.File.Exists(AYttFMConstsAndUtils.STUDENTS_FILENAME)) 
    { 
     if (null == _studentsList) 
     { 
      var students = System.IO.File.ReadAllText(AYttFMConstsAndUtils.STUDENTS_FILENAME); 
      _studentsList = JsonConvert.DeserializeObject<List<Student>>(students); 
     } 
     // Sort by firstname    
     _studentsList = _studentsList.OrderBy(i => i.FirstName).ToList(); 
     comboBoxStudents.DataSource = _studentsList; 
     string firstNameLastName = "FirstName LastName"; 
     comboBoxStudents.DisplayMember = firstNameLastName; 
     comboBoxStudents.ValueMember = "StudentID"; 
    } 
} 

Это не работает; ValueMember становится DisplayMember.

Это работает:

. . . 
comboBoxStudents.DataSource = _studentsList; 
comboBoxStudents.DisplayMember = "FirstName"; 
comboBoxStudents.ValueMember = "StudentID"; 
. . . 

... но не режет горчицу - мне нужно оба дали и фамилию, а не только имя (или наоборот).

Как я могу объединить два поля класса, чтобы отображать DisplayMember из списков combobox?

+1

переопределить ToString, чтобы отобразить все, вы хотите, а затем оставить DisplayMember пустым. или создать искусственное свойство и использовать его как DisplayMember – Plutonix

ответ

2

Я бы расширить Student класс с имуществом, который возвращает "FirstName + LastName"

как ...

... 
    public string DisplayName 
     { 
      get 
      { 
       return string.Format("{0} {1}", this.FirstName, this.LastName); 
      } 
     } 
... 

чем присвоить это имущество DisplayMember

comboBoxStudents.DisplayMember = "DisplayName"; 
+0

Perfect/elegant/почему я не подумал об этом? –

+0

иногда нужен третий глаз;) – Cadburry

 Смежные вопросы

  • Нет связанных вопросов^_^