用 C/C++ 中的值填充 DataGridView 组合框

Filling a DataGridView ComboBox with values in C/C++

本文关键字:填充 DataGridView 组合 C++      更新时间:2023-10-16

我正在为大学创建一个Windows表单应用程序。我的数据存储在抽象数据类型的多重 c 数组中。每个数组都显示在它自己的数据网格视图中。这一切都没有问题。 由于数据的连接方式与数据库中的数据类似,因此我向父表添加了一个新列,并将 ColumnType 设置为 DataGridViewComboBoxColumn。现在我需要用不同数组/数据网格视图的数据填充这个组合框。

我已经尝试从我的数组中手动添加选项,如此问题中所述:在未绑定模式下以编程方式填充 DataGridView ComboBox?。由于我需要使用 C/C++ 并且此示例使用 vb,因此使用的函数不可用。我可以dataGridView1->Columns[0]选择我的列,但->Items不存在。

是否可以从我的数组创建数据源以直接链接它们?还是我忽略了从数组中手动添加它们的方法?

你没有提供任何代码,也没有很好地描述你在哪里遇到问题。假设您要将未绑定列表填充到DataGridViewComboBoxColumn中,这里有一个简单的例子。

C#:

DataTable dt;
dt.Columns.Add("ID", typeof(Int32));
dt.Columns.Add("Category", typeof(string));
dt.Rows.Add({1, "Fruits"});
dt.Rows.Add({2, "Vegetables"});
dt.Rows.Add({3, "Trees"});
DataGridViewComboBoxColumn dgCol = this.DataGridView1.columns("Category");
dgCol.ValueMember = "ID";
dgCol.DisplayMember = "Category";
dgCol.DataSource = dt;

在此示例中,我们创建一个DataTable,用所需的值填充它并将其用作DataGridViewComboBoxColumnDataSource。显然,您在DataGridViewDataSource中提供给此列的值必须与列表中新DataTable"dt"中的 ID 匹配。

您可以将数组或其他数据转换为DataTable,甚至可以直接将它们用作DataSource。这取决于您拥有哪些数据。不过,原理将非常相似。

VB.NET:

Dim dt As DataTable
dt.Columns.Add("ID", GetType(Int32))
dt.Columns.Add("Category", GetType(String))
dt.Rows.Add({1, "Fruits"})
dt.Rows.Add({2, "Vegetables"})
dt.Rows.Add({3, "Trees"})
Dim dgCol As DataGridViewComboBoxColumn = Me.DataGridView1.columns("Category")
dgCol.ValueMember = "ID"
dgCol.DisplayMember = "Category"
dgCol.DataSource = dt