gpt4 book ai didi

c# - DataGridViewComboBoxColumn 数据源?

转载 作者:太空狗 更新时间:2023-10-29 22:20:14 28 4
gpt4 key购买 nike

我正在尝试在 DataGridView 中设置一些内容。看起来这应该很简单,但我遇到了麻烦。我想显示三列:

  • 代码ID
  • 代号
  • 带有 TypeName 的 DisplayMember 和 TypeID 的 ValueMember 的组合框

我希望能够从 TypeName 的所有可能值中进行选择。这是我的困境:

如果我将所有这些加载到一个 DataTable 并将 DataGridView 设置为 DataSource,我可以显示现有的 TypeName 用于该记录,但组合框将不包含任何其他值。如果我将 DataGridViewComboBoxColumnDataSource 设置为包含所有可能的 TypeNames 的单独 DataTable,则现有值为不显示。

DataGridView 使用起来真的很烦人,因此无论是对此的解决方案还是可行的替代方案,我们都将不胜感激。

编辑:问题似乎是因为我想为 DisplayMemberValueMember 设置一个单独的项目。以下工作,如果我不担心将 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"
}

编辑:typeList 是一个简单的 DataTable,由以下内容填充:

SELECT DISTINCT IT.InsuranceTypeID, IT.[Type]
FROM InsuranceType IT
WHERE IT.ClientID = @ClientID
ORDER BY [Type]

最佳答案

我有一个类似的(我认为)问题,我的解决方案是设置 DataSource对于 DataGridViewComboBoxColumn 之前设置 DataSource对于 DataGridView .

在我的例子中,我的数据源是 List<T>和一个 BindingList<T>分别但它应该与 DataTables 一样工作:

DataGridViewComboBoxColumn categoryColumn = (DataGridViewComboBoxColumn)_ItemsGrid.Columns["CategoryID"];
categoryColumn.DataSource = categories;

_ItemsGrid.DataSource = items;

关于c# - DataGridViewComboBoxColumn 数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666461/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com