É muito comum termos que exibir uma mensagem de confirmação quando o usuário tenta excluir um item , seja ele um pedido, produto, usuario, etc.
Em 99% das vezes temos que pedir a confirmação para evitar transtornos, como o usuário excluir algo que não deve porque clicou sem querer.
Como nos meus projetos coloco isso como padrão estava pensando em como fazer isso de algo automatico, para que eu ou outro desenvolvedor desatento ou num momento de saco cheio , não esqueça de coloca-lo.
Então nos meus pensamentos lembrei de um post do Fernando Cerqueira sobre como corrigir um problema ao utilizar webparts com ajax http://thespoke.net/blogs/fcerqueira/default.aspx , esse grande conceito chama-se tagMapping com esse cara você pode dizer pro .net , ao invés de utilizar
a classe System.Web.UI.WebControls.ImageButton para um image button usa a minha.
Então eu criei uma classe herdando de ImageButton e customizei o evento init para configurar o bendito confirm sempre que o ImageButton tiver a propriedade CommandName igual a DELETE
Assim todos os meus grids que possuem o controle ImageButton delete , possuem a confirmação automaticamente, a unica coisa que faço no gridview é converter a coluna com os botões de ações para template e mudo de linkbutton para imagebutton, essa parte eu ja fazia, pois tenho um skin com a imagem de cada botão. Veja abaixo como fica o webconfig.
<pages>
<tagMapping>
<add tagType="System.Web.UI.WebControls.ImageButton" mappedTagType="AKAMAE_CONTROL.ImageButtonAkamae" />
</tagMapping>
</pages>
<tagMapping>
<add tagType="System.Web.UI.WebControls.ImageButton" mappedTagType="AKAMAE_CONTROL.ImageButtonAkamae" />
</tagMapping>
</pages>
Esse recurso poderia ser utilizado para trocar todos os textbox para um componente de terceiro sem precisar entrar em cada página para fazer isso … Abaixo a gloriosa classe … 

Public
Class ImageButtonAkamae Inherits ImageButtonPrivate Sub ImageButtonAkamae_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init If (Me.CommandName IsNot Nothing) AndAlso (Me.CommandName.ToUpper() = "DELETE") Then Me.OnClientClick = "return (confirm(‘Confirma exclusão?’));" End If End Sub
End
Class