scusate ma nn ho ancora l'esperienza x superare anche le questioni + normali.. chiedo aiuto

la domanda è: si può usare un datagridview per inserire/modificare/eliminare in modo semplice i record di una tabella? io sono riuscito per ora a fare la modifica e la cancellazione, ho invece problemi sull'inserimento

ho il codice seguente:

codice:
        private void dgvRischiVDT_UserAddedRow(object sender, DataGridViewRowEventArgs e)
        {
            //  in fase di inserimento dati nuova riga
            dgvRischiVDT.Rows[dgvRischiVDT.CurrentRow.Index].Cells[1].Value = _matricola;
            //dgvRischiVDT.Rows[dgvRischiVDT.CurrentRow.Index].Cells[0].Value = DBNull.Value;
        }

        private void btnSalvaRischioVDT_Click(object sender, EventArgs e)
        {
            //  riporta le modifiche sul db
            rischiVDTBindingSource.EndEdit();
            rischiVDTTableAdapter.Update(dsSorveglianzaSanitaria);
        }
quando manualmente aggiungo un nuovo record alla dgv, in automatico compilo il campo matricola e a mano gli altri, poi premo il pulsante di salvataggio che chiama la btnSalvaRischioVDT_Click, ma qui la proc. da un'eccezione

La query con parametri '(@Matricola varchar(8000),@Anno varchar(8000),@IDDominioQuestion' prevede il parametro '@Matricola', che non è stato specificato.
e nn capisco il motivo

la dgv è collegata tramite un bindingsource ad un tableadapter che contiene il codice di INSERT

codice:
INSERT INTO RischiVDT
                      (Matricola, Anno, IDDominioQuestionario, RischioVDT, IDLivelloRischio)
VALUES     (@Matricola,@Anno,@IDDominioQuestionario,@RischioVDT,@IDLivelloRischio)
???