Я пытаюсь настроить что-то в DataGridView
. Кажется, это должно быть довольно просто, но у меня проблемы. Я хочу отобразить три столбца:
Я хочу иметь возможность выбирать из всех возможных значений 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]