C # Substitua a caixa de texto padrão no DataGridView por uma caixa de combinação

Ainda sou muito novo em C #, mas estou trabalhando em um aplicativo WinForms que extrai dados de um banco de dados do Access. Atualmente, estou trabalhando em um formulário que carrega o conteúdo de uma tabela em um DataGridView dinamicamente usando um DataAdapter e DataSet.

Até agora, o formulário está funcionando como esperado. Atualmente, para adicionar um novo registro, você deve digitar dados em cada célula em uma linha. O que eu quero fazer é substituir algumas colunas (caixa de texto) por uma caixa de combinação. Em outras palavras, em vez de inserir manualmente os dados, tenha uma caixa de combinação suspensa e selecione a entrada em uma lista. Também quero gerar os membros de dados da caixa de combinação a partir do SQL, mas se isso for demais, posso codificar manualmente cada item.

Posso adicionar uma caixa de combinação à visualização de datagrid em tempo de execução, mas não é isso que estou tentando fazer. E como as colunas estão sendo criadas em tempo de execução via código, não sei como modificar uma coluna seguindo esse método.

Então, por exemplo, quero substituir as células da caixa de texto por "Classificação" por membros de uma caixa de combinação como "R", "PG-13", "PG" etc.

public partial class frmBulkInsert : Form
{
    OleDbConnection conn;
    OleDbDataAdapter da;
    DataSet ds;
    OleDbCommandBuilder cmdbl;


    public frmBulkInsert()
    {
        InitializeComponent();
    }

    private void frmBulkInsert_Load_1(object sender, EventArgs e)
    {
        // Load all records from the table into the datagridview.
        try
        {
            dataConnectionSettings();              
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error\n" + ex.Message, "Error", MessageBoxButtons.OK,   MessageBoxIcon.Error);
        }
    }


    private void button1_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void ConnectToDatabase()
    {
        conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=C:\Users\ronniejones.JONES\Documents\Access Projects\Movie_2013.mdb";
    }

    private void btnUpdateRecords_Click(object sender, EventArgs e)
    {
        try
        {
            //DataSet changes = (ds).GetChanges();

            cmdbl = new OleDbCommandBuilder(da);
            //da.Update(ds, "Movie_2013");
            int numRows = da.Update(ds, "Movie_2013");
            MessageBox.Show(numRows + " Record(s) Updated", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,  MessageBoxIcon.Error);
        }
    }

private void dataConnectionSettings()
    {
        //DataGridViewComboBoxColumn cboColumn;
        conn = new OleDbConnection();
        ConnectToDatabase();
        conn.Open();
        da = new OleDbDataAdapter("SELECT ID, Title, [Minutes], Rating, Category,     Format, Actor1, Actor2, Actor3, Actor4, [Status] FROM [Movies] ORDER BY ID", conn);
        ds = new DataSet();
        da.Fill(ds, "Movie_2013");
        dataGridView1.DataSource = ds.Tables[0];

questionAnswers(2)

yourAnswerToTheQuestion