DataGridViewComboBoxColumn DataSource?

Я пытаюсь настроить что-то в DataGridView . Кажется, это должно быть довольно просто, но у меня проблемы. Я хочу отобразить три столбца:

  • CodeID
  • CodeName
  • ComboBox с DisplayMember из TypeName, ValueMember из TypeID

Я хочу иметь возможность выбирать из всех возможных значений TypeName . Вот моя дилемма:

Если я загружу все это в один DataTable и установлю DataGridView как DataSource , я смогу отобразить существующий TypeName для этой записи, но поле со списком не будет включать никаких других значений. Если я установил DataSource для DataGridViewComboBoxColumn в отдельный DataTable , который включает все возможные TypeNames , существующее значение не будет отображаться.

DataGridView действительно утомляет работать, поэтому было бы полезно либо решение для этого, либо жизнеспособная альтернатива.

Изменить: похоже, проблема вызвана моим желанием иметь отдельный элемент для DisplayMember и ValueMember .Следующее работает, если я не беспокоюсь об установке ID в качестве ValueMember :

var typeColumn = new DataGridViewComboBoxColumn
{
    DataSource = typeList,
    DisplayMember = "Type",
    ValueMember = "Type",
    DataPropertyName = "Type"
}

Если я сделаю следующее, правильные типы будут выбраны, но я не могу измените выбор в поле со списком:

var typeColumn = new DataGridViewComboBoxColumn
{
    DataSource = typeList,
    DisplayMember = "Type",
    ValueMember = "TypeID",
    DataPropertyName = "TypeID"
}

Если я использую следующее, я получаю ошибку FormatException при попытке заполнения:

var typeColumn = new DataGridViewComboBoxColumn
{
    DataSource = typeList,
    DisplayMember = "Type",
    ValueMember = "TypeID",
    DataPropertyName = "Type"
}

edit : typeList является simple DataTable заполняется следующим:

SELECT DISTINCT IT.InsuranceTypeID, IT.[Type]
FROM InsuranceType IT
WHERE IT.ClientID = @ClientID
ORDER BY [Type]
5
задан davmos 3 December 2015 в 10:30
поделиться