Not sure where you have placed the total variable.
But you should have it inside the bind method to reassign so the rowdatabound will update the reset value like
private void BindGrid()
{
totalAmount = 0;
SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd1 = new SqlCommand("procMyCart", con);
cmd1.CommandType = CommandType.StoredProcedure;
SqlDataAdapter sda = new SqlDataAdapter(cmd1);
DataTable dt = new DataTable();
sda.Fill(dt);
GvMyCart.DataSource = dt;
GvMyCart.DataBind();
con.Close();
}
Try and revert.