使用 DataTable 中的 ComboBoxColumn 创建 DataGridView

Posted

技术标签:

【中文标题】使用 DataTable 中的 ComboBoxColumn 创建 DataGridView【英文标题】:Create a DataGridView with ComboBoxColumn from a DataTable 【发布时间】:2013-06-28 08:01:00 【问题描述】:

我有一个DataGridView,我想以编程方式填写。通过创建DataTable 并通过BindingSource 将其绑定到DataGridViewDataGridView 中的列将创建为TextBoxColumns。下面是一个代码示例:

Dim dataTable As DataTable = New DataTable()
dataTable.Columns.AddRange(New DataColumn() New DataColumn("TextBoxColumn1"),
                                             New DataColumn("TextBoxColumn2"),
                                             New DataColumn("ComboBoxColumn"),
                                             New DataColumn("TextBoxColumn3"),
                                             New DataColumn("TextBoxColumn4"))

Dim bindingSource As BindingSource = New BindingSource
bindingSource.DataSource = dataTable
dataGridView.DataSource = bindingSource

DataGridView 中使列“ComboBoxColumn”成为ComboBoxColumn 的最佳方法是什么?

我可以在DataGridView 中手动创建ComboBoxColumn,然后将其绑定到DataColumn,但我想知道是否有更好的方法,例如在DataColumn 中设置属性或类似的东西那个。

【问题讨论】:

This answer 展示了如何将DataGridViewComboBoxColumn 添加到您的dataGridView 谢谢,但这并不是我想要的,因为DataGridView 中的列是在网格绑定到数据时创建的;我自己没有添加它们 当然,我可以稍后替换自动生成的列。 我建议你这样做。按名称抓取它,然后用新的 DataGridViewComboBoxColumn 替换它。 【参考方案1】:

按照@Codesleuth 的建议,我将自动生成的DataGridViewTextBoxColumn 替换为DataGridComboBoxColumn,如下所示:

Dim comboBoxColumn As DataGridViewComboBoxColumn = New DataGridViewComboBoxColumn()
comboBoxColumn.DataPropertyName = "ComboBoxColumn"
comboBoxColumn.DataSource = comboBoxBindingSource
comboBoxColumn.DisplayMember = "ComboBoxColumn"
comboBoxColumn.ValueMember = "ComboBoxColumn"
DataGridView.Columns.RemoveAt(COLUMN_INDEX)
DataGridView.Columns.Insert(COLUMN_INDEX, comboBoxColumn)

【讨论】:

您应该接受这个答案,即使它是您自己的帮助表明它已得到解决。谢谢!

以上是关于使用 DataTable 中的 ComboBoxColumn 创建 DataGridView的主要内容,如果未能解决你的问题,请参考以下文章

C#中删除DataTable中的行的方法

DataTable 中的多个数组

循环删除DataTable.Row中的多行问题

使用SqlBulkCopy将DataTable中的数据批量插入数据库中

关于c#中的datatable,不知道如何清空里面的数据

使用 SqlBulkCopy 将 DataTable 中的列映射到 SQL 表