Consider looking at it from the opposite side. Create a script attached to your button that has a public variable (index you need), and uses NGUITools.FindInParents inside OnClick() to find your manager script that's attached to one of the parent objects. Your script can then call some function on the manager script, passing the index.
It's clean, the parent doesn't know anything about what's calling it, and the only thing you have to do is set the index when instantiating your grid items.