Hiding a command button at runtime can be archieved by casting the commandfield in the DataBound event, and accessing the buttons from there. The sample below shows the hiding of a button based on a security role.
protected void DetailsViewDocuments_DataBound(object sender, EventArgs e)
{
// Check role
string currentuser = Common.GetRequestUser(); // some user retrieval process
if (!Shared.API.Permissions.IsSomeRole(currentuser, _database)) // permissions check
{
// disable edit and delete buttons
CommandField cmd = (CommandField)DetailsViewDocuments.Fields[6];
cmd.ShowEditButton = false;
cmd.ShowDeleteButton = false;
}
}
Note that this is only a visual protection, and security through obscurity only never stands. You still need to handle security also in your actual processing.