Puoi utlizzare il footer della griglia per fare l'inserimento delle nuove righe...crei tutta la gridview con le template column e su ogni colonna definisci il footer e gli metti le textbox e quello che serve per fare l'inserimento della nuova riga. Altrimenti non ti va di usare le template column, da codice, inserisci una riga nuova sul DataSource (nel mio caso un DataTable), impostando i valori di default in maniera opportuna, e selezionando la riga con il comando dtgGriglia.EditIndex = datatableTest.Rows.Count - 1.
Ecco l'opzione implementata con il codice:
Questo GridColumnLogin è un enum che contiene l'esatta posizione di ogni colonna sulla griglia, fondamentale quando si devono fare delle modifiche al numero e disposizione delle colonne, evita di utilizzare gli indici bindati nel codice.
Enjoy It 
http://blogs.dotnethell.it/Regulator/