2013-06-28 2 views
0

У меня есть DataGridView, который я хотел бы заполнить программно. Создав DataTable и привязывая его через BindingSource к DataGridView, столбцы в DataGridView создаются как TextBoxColumns. Образец кода ниже:Создайте DataGridView с ComboBoxColumn из DataTable

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 

Что является лучшим способом, чтобы сделать колонку «ComboBoxColumn»ComboBoxColumn в DataGridView?

я мог бы создать в DataGridView с ComboBoxColumn вручную, а затем привязать его к DataColumn, но я хотел бы знать, если есть лучший способ, как установка свойства в DataColumn или что-то в этом роде.

+0

[Ответ] (http://stackoverflow.com/a/7471347/209668) показывает, как добавить [DataGridViewComboBoxColumn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcomboboxcolumn.aspx) к вашему 'dataGridView'. – Codesleuth

+0

Спасибо, но это не совсем то, что я ищу, потому что столбцы в DataGridView создаются, когда сетка привязана к данным; Я сам их не добавляю – joharei

+0

Конечно, я мог бы заменить позже автоматически созданный столбец. – joharei

ответ

2

После @ предложению 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) 
+0

, вы должны принять этот ответ, даже если это было вашим собственным, чтобы показать, что оно было разрешено. Благодаря! – Rachael