Is that the complete code? I don't see where you are populating the grid in the first place.
If you are populating it from page load be sure and wrap (if!Page.IsPostBack) around the code that populates it. Page load fires on every request including postback and it will fire before the grid event. So if its binding the grid again on postback it will lose the edit item index and maybe it can't fire the event after that.
If its inside module I would also wrap the grid inside an UpDatePanel
Hope it helps,
Joe