Capace di giocare sia come terzino sia come centrale, mosse i suoi primi passi nel calcio con la squadra della sua città, la Ternana, con cui disputò due stagioni nel Campionato Nazionale Dilettanti. Nell'estate 1995 venne acquistato dalla Lazio, e nella prima stagione scese in campo 5 volte. Più spazio ebbe nella stagione 1996-1997, in cui prese parte a 19 incontri e riuscì anche a segnare una volta.
Grandoni venne spesso convocato nella Nazionale di calcio italiana Under-21, ma assistette quasi da spettatore alla stagione 1997-1998, in cui disputò 10 partite. Con la Lazio vinse una Coppa Italia e una Supercoppa italiana. Negli anni a venire legò il suo nome alla Sampdoria, per cui giocò dal giugno 1998 al gennaio 2004 in Serie B. Nel gennaio 2004 si trasferì in prestito al Modena, dove fu schierato regolarmente come titolare, e con la quale non riuscì ad evitare la retrocessione a fine anno dalla Serie A.
Passato poi al Livorno in Serie A, giocò 25 volte. Confermato nella stagione successiva, si meritò le lodi per un episodio di fair play: schiaffeggiato alla mano dall'attaccante dell'InterAdriano, testimoniò in sua difesa davanti alla Commissione Disciplinare che aveva squalificato il brasiliano per due turni e grazie alla sua deposizione questi venne assolto[3]. Nelle stagioni seguenti Grandoni trovò sempre meno spazio in squadra. Il 31 agosto 2009 è stato acquistato dal Gallipoli, squadra che milita per la prima volta nella sua storia in Serie B.
Svincolatosi a seguito del fallimento del Gallipoli, il 17 agosto 2010 firma un contratto con l'Olympiakos Volos, squadra militante nel massimo campionato ellenico.[4] Nel novembre 2010 rescinde il contratto con la squadra greca e si allena con lo Sporting Terni, squadra militante nel campionato di Serie D, con la quale il 2 gennaio 2011 firma un contratto.[5][6] Alla fine della stagione 2011-2012 rimane svincolato[7] e cessa l'attività agonistica all'età di 35 anni.
In carriera ha collezionato complessivamente 227 presenze e 3 reti in Serie A e 149 presenze in Serie B.
L'11 agosto 2012 assume l'incarico di allenatore del Massa Martana Calcio a 5[8], squadra militante in Serie C2 umbra, ma il 2 ottobre 2012 lascia l'incarico[9].
Il 29 luglio 2014 viene nominato nuovo allenatore dei Giovanissimi Nazionali della Fiorentina[10] e dal settembre 2016 diventa allenatore della Primavera del Pisa[11]. Il 28 novembre 2017 viene scelto come nuovo tecnico dello Scandicci, militante in Serie D[12], conquistando al termine della stagione un'insperata salvezza tramite i play-out.[13]
Il 14 giugno 2018 sostituisce Chezzi sulla panchina del Savona.[14]
Il 7 luglio 2019 viene nominato allenatore del Chieti, al posto dell'esonerato Lucarelli; viene esonerato il 18 novembre. Il 13 luglio 2020 viene annunciato come nuovo mister dell'Albenga, squadra ligure militante in Eccellenza[15] con vice David Balleri, suo compagno ai tempi di Sampdoria e Livorno, a fine anno dopo un 4º posto nella stagione regolare e l'eliminazione al primo turno Play-off contro il Ligorna, si dimette. Nel 2021 ha diretto le giovanili del Savona[16], nel 2022 il settore giovanile del Praese[17] , mentre dal 2023 dirige il settore giovanile e la squadra juniores della Sestrese[18]