I agree with everyone else - being consistent is the key - both at home and at grandpa's. If grandpa won't follow the plan, then you just have to keep him home for a few weeks until the pattern is established. Do the same short bedtime routine everynight at the same time. You might want to remove all toys and books from his room so it's dead boring in there (we had to do this with our son - we even removed the clothes for a few days because he emptied the drawers). Say goodnight and leave the room. I wouldn't worry if he's in bed or not... he can't be doing much in there with no toys. When/if he leaves the room, just silently walk him back to bed and then leave. Don't respond in anyway or engage him in conversation. If your son is super-stubborn like ours you'll be walking him back repeatedly for a few hours the first night. It does get better though. By the 4th night our son stayed in his room after we said goodnight. Part of our routine is to leave the room with the light on... he gets to 'read' in bed for 15 minutes by himself after we read to him and then we come back in to turn off the light and say goodnight. You could put a baby gate in the hallway or top of stairs if you are worried about him roaming around at night.
Remember the 3 things parents has no control over.... eat, sleep and poop. You can't force him to sleep, but you can force him to stay in his room. With the light off and complete boredom in his room, our son usually falls asleep within a few minutes now. However, when we started there were nights he'd be up late (his body clock was set to staying up later) and we'd fall asleep while he was still awake (baby gate kept him at his end of the hallway so there was nothing he could get into).
Good luck!