Uma das técnicas que tem mais sido usadas é a edição in-line do gridview e o comum de se encontrar é utilizar a última linha da gridview com os campos para inserção, porém se você utilizar o commandfield para adicionar os linkbutton pode dar um pouco de dor de cabeça para conseguir deixar um layout legal.
O resultado que esperamos conseguir é algo nesse estilo:

aspx
<asp:GridView
ID="grid1"
runat="server"
ShowFooter="true"
OnRowDataBound="gvRow"
>
<Columns>
<asp:CommandField
HeaderText="Opções"
EditText="Editar"
UpdateText="Salvar"
ShowEditButton="true"
CancelText="Cancelar"
ShowCancelButton="true"
DeleteText="Excluir"
ShowDeleteButton="true"
FooterText="Inserir"
/>
protected void gvRow(object sender, GridViewRowEventArgs e)
{
//Verifica se é o rodapé
if (e.Row.RowType.Equals(DataControlRowType.Footer))
{
// Deixando o linkbutton centralizado
e.Row.Cells[0].Style.Add("text-align", "center");
// Instanciando o linkbutton
LinkButton lb = new LinkButton();
lb.Text = "Inserir";
// Registrando o evento
lb.Click += new EventHandler(gvSistemasInserir);
// Adicionando a celula
e.Row.Cells[0].Controls.Add(lb);
}
}
Bem, o que basicamente fizemos foi no evento de RowDataBound, verificar quando se está no rodapé e adicionar na primeira célula o link de Inserir, é um método meio “porco” mas funciona e no momento meu lema é “Funcionou, tá certo”