hmm apparently id is not a buttonfield property. You are supposed to reference them by index accoring to msdn
To determine the index of the record that raises the command event, use the CommandArgument property of the event argument that is passed to the command event for the data-bound control. The ButtonField class automatically populates the CommandArgument property with the appropriate index value. (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.buttonfield.aspx)
Another option is to just wrap the buttonfield in a panel and hide the panel when you want, this will hide the button with it
<asp:Panel id="pnlButtonHide" runat="server>
<asp:ButtonField>
</asp:Panel> //When you want to hide
((Panel)whereyourpanelis.findControl("pnlButtonHide")).Visible = fasle;
Please remember to click "Mark as Answer" on this post if it helped you.