how to Edit,Update & Delete Record in GridView Using DATAKEY

Dafault.aspx

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
             DataKeyNames="id">
        <Columns>
       
        <asp:TemplateField>
        <ItemTemplate>
            <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("id") %>' />
        </ItemTemplate>
        </asp:TemplateField>
       


       
        <asp:TemplateField HeaderText="name">
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%#Eval("name") %>'></asp:Label>
        </ItemTemplate>
        </asp:TemplateField>
       
       
        <asp:TemplateField HeaderText="city">
        <ItemTemplate>
            <asp:Label ID="Label2" runat="server" Text='<%#Eval("city") %>'></asp:Label>
        </ItemTemplate>
        </asp:TemplateField>



       <asp:TemplateField HeaderText="Operation">
       <ItemTemplate>
            <asp:LinkButton ID="edit" runat="server"
                CommandArgument='<%#Eval("id") %>' onclick="edit_Click">Edit</asp:LinkButton>
            <asp:LinkButton ID="delete" runat="server" CommandName="del"
                CommandArgument='<%#Eval("id") %>'

                onclick="delete_Click">Delete</asp:LinkButton>
        </ItemTemplate>
        </asp:TemplateField>


        </Columns>
        </asp:GridView>



Dafault.aspx.CS

static int i;
protected void delete_Click(object sender, EventArgs e)
    {
        LinkButton lb = (LinkButton)sender;
        GridViewRow row = (GridViewRow)lb.Parent.Parent;
        int getID = int.Parse(GridView1.DataKeys[row.RowIndex].Value.ToString());
             SqlCommand cmd = new SqlCommand("delete from employee where id='" +
getID + "'", con);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
    }
protected void edit_Click(object sender, EventArgs e)
    {
        LinkButton lb = (LinkButton)sender;
        foreach (GridViewRow row in GridView1.Rows)
        {
            int getID = int.Parse(GridView1.DataKeys[row.RowIndex].Value.ToString());
            if (
getID.ToString().Equals(lb.CommandArgument))
            {
                i = int.Parse(lb.CommandArgument.ToString());
                Label name = (Label)GridView1.Rows[row.RowIndex].FindControl("Label1");
                Label city = (Label)GridView1.Rows[row.RowIndex].FindControl("Label2");
                TextBox1.Text = name.Text;
                TextBox2.Text = city.Text;
            }
        }
    }
protected void update_Click(object sender, EventArgs e)
    {
            con.Open();
            SqlCommand cmd = new SqlCommand("update employee set name='" + TextBox1.Text + 
            "',city='"+ TextBox2.Text + "' where id='" + i + "'", con);             
            cmd.ExecuteNonQuery();
            con.Close(); 
    }