Friends,

In this article we will see how to add a custom ComboBox column to DataGridView in Windows Forms. This scenario generally occurs when we need to edit a row in the DataGridView and allow users to select a value for a cell from a predefined set of values. This article will help you do that.

This article assumes that the name of the DataGridView is gridRecords and the GetDataFromDatabase() function returns a DataTable with data to be assigned to the DataGridView.

  1. private void LoadGrid()
  2. {
  3. gridRecords.Columns.Clear();
  4. gridRecords.DataSource = GetDataFromDatabase();
  5. if(gridRecords.Columns.Count > 0) // Add Checkbox column only when records are present.
  6. AddComboBoxColumn();
  7. }
  8. private void AddComboBoxColumn()
  9. {
  10. DataGridViewComboBoxColumn dgcm = new DataGridViewComboBoxColumn();
  11. dgcm.HeaderText = "Employee";
  12. DataTable dt = new DataTable();
  13. dt.Columns.Add("ID");
  14. dt.Columns.Add("Name");
  15. for(int i=1;i<5;i++)
  16. {
  17. DataRow dr = dt.NewRow();
  18. dr["ID"] = i;
  19. dr["Name"] = "Employee " + i;
  20. dt.Rows.Add(dr);
  21. }
  22. dgcm.ValueMember = "ID";
  23. dgcm.DisplayMember = "Name";
  24. dgcm.DataSource = dt;
  25. gridRecords.Columns.Add(dgcm);
  26. }

In the code above, we set the DataSource of the DataGridView control with the datatable. Once set, we add a new column named “Employee” to the DataGridView at the end of the grid.

I hope you like this! Keep learning and sharing! Cheers!