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”