C # Zastąp domyślne pole tekstowe w DataGridView za pomocą Combobox

Nadal jestem całkiem nowy w C #, ale pracuję nad aplikacją WinForm, która pobiera dane z bazy danych Access. Obecnie pracuję nad formularzem, który ładuje zawartość z tabeli dynamicznie do DataGridView za pomocą DataAdapter i DataSet.

Jak dotąd formularz działa zgodnie z oczekiwaniami. Obecnie, aby dodać nowy rekord, musisz wpisać dane do każdej komórki z rzędu. Chcę tylko zastąpić kilka kolumn (pole tekstowe) comboboxem. Innymi słowy, zamiast ręcznie wprowadzać dane, należy rozwinąć listę rozwijaną i wybrać wpis z listy. Chcę także wygenerować elementy danych combobox z SQL, ale jeśli to za dużo, mogę po prostu ręcznie kodować każdy element.

Mogę dodać combobox do datagridview w czasie wykonywania, ale to nie jest to, co próbuję zrobić. A ponieważ kolumny są tworzone w czasie wykonywania za pomocą kodu, nie jestem pewien, jak zmodyfikować kolumnę zgodnie z tą metodą.

Na przykład chcę zamienić komórki tekstowe na „Rating” na elementy combobox, takie jak „R”, „PG-13”, „PG” itp.

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