Allora, ho un mio vecchissimo esempio. Ho una tabella con un tasto e una immagine per cancellare la riga corrente.
Prima di cancellare mando un messaggio di conferma: se confermo, mando la pagina al server per la cancellazione, altrimenti mi limito a non mandare la pagina al server e non faccio nulla

1° caso: ho un pulsante di submit. nella pagina ho:
codice:
<asp:ButtonColumn Text="Delete" ButtonType="PushButton" HeaderText="Delete" CommandName="Delete"></asp:ButtonColumn>
l'html generato da asp.net è:
codice:
<input type="submit" name="DataGrid1:_ctl2:_ctl1" value="Delete" onclick="return(confirm('Sei sicuro di voler cancellare questo record?'))" />
il pulsante di submit invia la pagina al server, ma posso bloccare l'azione del submit restituendo false nell'evento client onclick. Perciò, il retur confirm restituirà true o false as seconda della risposta dell'utente: se è false viene bloccato il submit.


2° caso: ho una immagine dentro un link
codice:
<asp:ButtonColumn Text="[img]/corso_apogeo/immagini/cancella.gif[/img]" ButtonType="LinkButton" HeaderText="Delete" CommandName="Delete" ItemStyle-HorizontalAlign="Center"></asp:ButtonColumn>
l'html prodotto è:
come tu vedi, asp.net lancia il postback richiamando la funzione :__doPostBack. Anche qui, per bloccare l'azione del submit, bisogna restituire false nell'evento onclick.

Adesso, il codice javascript per l'evento onclick, non si può scrivere pari-pari nella pagina (sarebbe troppo bello). Possiamo utilizzare però l'evento server ItemDataBound. In Basic il codice può essere:
codice:
    Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
        Select Case e.Item.ItemType
            Case ListItemType.AlternatingItem, ListItemType.Item
                If TypeOf e.Item.Cells(6).Controls(0) Is Button Then
                    Dim c As Button = DirectCast(e.Item.Cells(6).Controls(0), Button)
                    If c.CommandName = "Delete" Then c.Attributes.Add("onclick", "return(confirm('Sei sicuro di voler cancellare questo record?'))")
                End If
                If TypeOf e.Item.Cells(7).Controls(0) Is LinkButton Then
                    Dim c As LinkButton = DirectCast(e.Item.Cells(7).Controls(0), LinkButton)
                    If c.CommandName = "Delete" Then c.Attributes.Add("onclick", "return(confirm('Sei sicuro di voler cancellare questo record?'))")
                End If

            Case ListItemType.Header
                'Dim lc As New Literal()
                'lc.Text = "<table border='1' cellspacing='1' BGCOLOR='white' BORDERCOLOR='red' ><tr><td>xxx</td><td>yyy</td></tr></table>"
                'e.Item.Controls(1).Controls.AddAt(0, lc)
        End Select
    End Sub