Я пытаюсь что-то настроить в DataGridView
. Кажется, это должно быть довольно просто, но у меня проблемы. Я хочу отобразить три столбца:
- CodeID
- CodeName
- ComboBox с DisplayMember типа TypeName, ValueMember типа ID
Я хочу иметь возможность выбрать из всех возможных значений 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
- это простое DataTable
, заполненное следующим:
SELECT DISTINCT IT.InsuranceTypeID, IT.[Type]
FROM InsuranceType IT
WHERE IT.ClientID = @ClientID
ORDER BY [Type]