Несколько хороших советов в комментариях от SSS, возможно, самый простой способ добиться этого - использовать AutogenerateColumns для генерации большей части материала, а затем добавить несколько столбцов со списком для ваших цветов. Вероятно, это будет go что-то вроде этого:
dataGridColors.DataSource =
dataGridBarTops.DataSource = dbContext.BarTops;
dataGridBarTops.AutogenerateColumns = false;
var c = new DataGridViewComboBoxColumn();
c.HeaderText = "Color";
c.DisplayMember = "Color1"; //name of property that says Blue in color entity
c.ValueMember = "ColorID"; //name of property that says 5 in color/entity
c.DataPropertyName = "BarTopColorId"; //name of property that says 5 in BARTOPS table/entity
c.DataSource = dbContext.Colors; //personally I would use a bindingSource here
dataGridBarTops.Columns.Add(cb);
Я оставлю удаление текста в поле Цвет столбца в качестве упражнения для вас - может быть, сначала оставьте его, чтобы увидеть, как работает комбо
Просмотр таблицы цветов предназначен для редактирования фактических определений цветов и т. Д. c. Поле со списком в верхней части бара предназначено для выбора другого цвета для одной верхней панели. Если вы отредактируете таблицу цветов, она изменит то, что находится в списке комбо. Если вы выберете новое комбо-значение, оно изменит идентификатор цвета баропта (независимо от того, как называется это свойство)
Будьте осторожны, чтобы не отредактировать идентификаторы в цветах, которые используются в барах - не удаляйте цветовой идентификатор 5 из таблицы цветов, пока есть еще баропт, который его использует
Я оставил там комментарий о bindingsources. Я никогда не связывал DGV прямо со списком сущностей LINQ, и, вероятно, я бы этого не сделал (отчасти потому, что он загружает всю таблицу, которая может быть огромной, а отчасти потому, что моя привязка данных winforms почти исключительно связана со строго типизированными наборами данных), но вы найдете это для работать (и, возможно, вам нужна вся таблица, без фильтрации). Если, однако, вы начинаете видеть странные эффекты, такие как выбор разных строк в представлении данных Цвета, приводит к изменению значения всех полей со списком, связывайте их через источник привязки, чтобы у них было что-то, что специально отслеживает «текущий элемент» для комбинации