When using /summon, tags like CanPlaceOn are ignored, which means that
/summon Item ~ ~ ~ {Item:{id:1,Damage:2,Count:1},PickupDelay:0,CanPlaceOn:["redstone_block"]}
won't work, but
/give GrmpfhcGames stone 1 2 {PickupDelay:0,CanPlaceOn:["redstone_block"]}
will.
It is because you are using the dataTags incorrectly, you have to do it like this: /summon Item ~ ~ ~ {Item:{id:1,Damage:2,Count:1,tag:{CanPlaceOn:["redstone_block"]}},PickupDelay:0}