Yes, this is - take a look at ComboBox with DataGridView in C # :
Using a ComboBox with a DataGridView is no longer so complex, but almost mandatory when developing some data-based programs.

I created a DataGridView, like this one. Now I want to show "Month" and "Item" instead of "MonthID" and "ItemID" in the DataGridView.
In fact, the article describes the binding of lists with a list with a separate source of binding - in this case, the validation table is stored, where MonthID and MonthName , and the name of the month is displayed based on the identifier from the original data.
Here it sets the month data source, selects from the month table, and then creates a BindingSource from the returned data.
//Month Data Source string selectQueryStringMonth = "SELECT MonthID,MonthText FROM Table_Month"; SqlDataAdapter sqlDataAdapterMonth = new SqlDataAdapter(selectQueryStringMonth, sqlConnection); SqlCommandBuilder sqlCommandBuilderMonth = new SqlCommandBuilder(sqlDataAdapterMonth); DataTable dataTableMonth= new DataTable(); sqlDataAdapterMonth.Fill(dataTableMonth); BindingSource bindingSourceMonth = new BindingSource(); bindingSourceMonth.DataSource = dataTableMonth;
He then adds the ComboBoxColumn of the month to the DataGridView, using the DataSource created above as a BindingSource :
//Adding Month Combo DataGridViewComboBoxColumn ColumnMonth = new DataGridViewComboBoxColumn(); ColumnMonth.DataPropertyName = "MonthID"; ColumnMonth.HeaderText = "Month"; ColumnMonth.Width = 120; ColumnMonth.DataSource = bindingSourceMonth; ColumnMonth.ValueMember = "MonthID"; ColumnMonth.DisplayMember = "MonthText"; dataGridViewComboTrial.Columns.Add(ColumnMonth);
Finally, it binds the DataGridView to the source data.
source share