I changed the name of my Class and the RoomName property to RoomType:
public class _RoomType
{
public string RoomID { get; set; }
public string RoomType { get; set; }
}
I changed my code so that the names all match up:
DataTable dttRooms = lda.RoomDetailsGet(SeriesID, JobID);
List<_RoomType> roomType = new List<_RoomType> { };
foreach (DataRow dr in dttRooms.Rows)
{
roomType.Insert(roomType.Count, new _RoomType { RoomID = Convert.ToString(dr["RoomID"]), RoomType = Convert.ToString(dr["RoomType"]) });
}
DataGridViewComboBoxColumn dgvc;
dgvc = (DataGridViewComboBoxColumn)dgvItems.Columns["Room"];
dgvc.HeaderText = "Room";
dgvc.DataPropertyName = "RoomID";
dgvc.ValueMember = "RoomID";
dgvc.DisplayMember = "RoomType";
dgvc.DataSource = roomType;
dgvItems.DataSource = dtForGridView;
Suddenly it's working as expected. I'd still love to know why, but at least my problem is solved.