Я успешно добавление пары Display/значение в выпадающем списке, как это:Как добавить DisplayMember и ValueMember в один элемент ComboBox, который имеет назначенный DataSource?
List<Student> BRStudents =
studentsList.Where(h => h.EnrolledInAYttFM)
.Where(i =>
i.RecommendedNextTalkTypeID.Equals(BIBLE_READING_TALK_TYPE))
.OrderBy(j => j.WeekOfLastAssignment)
.ToList();
comboBoxBR.DataSource = BRStudents;
comboBoxBR.DisplayMember = "FullName";
comboBoxBR.ValueMember = "StudentID";
... но я тогда (в некоторых случаях) хотят добавить еще один пункт к comboBoxBR, один из которых не присутствует в BRStudents список. Если я пытаюсь сделать это:
AssignmentHistory ah = AYttFMConstsAndUtils.AssignmentHistList
.FirstOrDefault(i => i.WeekOfAssignment == currentWeek && i.TalkType == 1);
string fullName = AYttFMConstsAndUtils.GetStudentFullNameForID(ah.StudentID_FK);
comboBoxBR.Items.Add(fullName);
... Я получаю «Коллекция предметов не может быть изменен, когда свойство DataSource установлено»
Действительно, я хочу сделать что-то вроде этого:
comboBoxBR.Items.Add(fullName, ah.StudentID_FK);
Есть ли способ объединить два результата (список студента и одного AssignmentHistory) в словарь или некоторой такую коллекцию, а затем назначить , что как источник данных для comboBoxBR?
Для полного раскрытия, вот определения Студента и AssignmentHistory:
public class Student
{
public int StudentID { get; set; }
public int FamilyID { get; set; }
public bool EnrolledInAYttFM { get; set; }
public DateTime DateEnrolledOrHiatusAYttFM { get; set; }
public bool GivesBibleReading { get; set; }
public bool PresentsICRVBS { get; set; }
public bool IsHouseholder { get; set; }
public bool IsMale { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddr { get; set; }
public DateTime WeekOfLastAssignment { get; set; }
public int RecommendedNextTalkTypeID { get; set; }
public int NextCounselPoint { get; set; }
public string FullName => $"{FirstName} {LastName}";
}
public class AssignmentHistory
{
public DateTime WeekOfAssignment { get; set; }
public int TalkType { get; set; }
public int StudentID_FK { get; set; }
public int AssistantID_FK { get; set; }
public int CounselPoint { get; set; }
public bool HasBeenEmailed { get; set; }
public bool SlipHasBeenPrinted { get; set; }
}