Вы можете настроить метод для обработки события OnRowDeleting gridview, отменить удаление там и реализовать собственную логику для выполнения удаления (т. Е. Удалить на основе некоторого поля, кроме идентификатора):
<asp:GridView OnRowDeleting="gridview_rowdeleting" />
protected void gridview_rowdeleting(Object sender, GridViewDeleteEventArgs e)
{
e.Cancel = true;
// logic for performing delete here...e.Rows returns the collection of deleted rows so you can access whatever values you need...e.Rows[0].Cells[0] gives the value in the first column for the first deleted row for example
}