1.Do you bind your grid programatically in the Page_Load event? Then probably the reason for this error is that when you rebind the grid instance in Page_Load every time, the posted data and viewstate will be lost. As a result, the ID of the button will be different and when the event is validated there will be no matching unique id and so event validation will fail. Hence, an event is raised for a button that is no longer in the control tree. You can work around this by wrapping your code in the if !IsPostBack when binding in the page load event.
2.This error can also occur if you use a DataBind call after setting the DataSource for the grid. If this is your case, then I would suggest you to move the data-binding logic into the NeedDataSource event and use the "Advanced data-binding" technique as explained in the documentation here:
Advanced Data-binding (using NeedDataSource event)