Наконец я что-то нашел. Я не знаю, правильно ли это, но сейчас это работает для меня. Вот что я сделал:
1) Я установил для свойства VirtualMode значение true для таблицы данных.
2) Я обработал событие CellValueNeeded
. В этом обработчике событий я проверяю индекс столбца и устанавливаю значение:
private void myDataGridView_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
if (e.ColumnIndex == 3)
{
// _appointments is a member variable which is the datasource of the grid
Appointment appointment = _appointments[e.RowIndex];
IList<DisciplineType> disciplines = appointment.GetDisciplines();
for (int i = 0; i < disciplines.Count; i++)
{
if (i > 0)
e.Value += ", " + disciplines[i].Description;
else
e.Value += disciplines[i].Description;
}
}
}
Надеюсь, это поможет кому-то еще. Или, если у вас есть лучшее решение, пожалуйста, дайте мне знать.