imposta la proprieta' DataKeyField del tuo datagrid:
codice:
DataKeyField="nome_campo_id"
...e, allo scatenarsi di un evento generato da un controllo figlio del datagrid (che per il bubbling 'sale' fino al naso dello stesso), recupera l'ID nell'evento tuaGrid_ItemCommand così: (in VB)
codice:
Public Sub tuaGrid_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles tuaGrid.ItemCommand
Select Case e.CommandName
Case "uno"
TuaSub(tuaGrid.DataKeys(e.Item.ItemIndex))
Case "due"
Tuasub(tuaGrid.DataKeys(e.Item.ItemIndex))
End Select
End Sub
con e.CommandArgument invece ottieni il valore impostato nella proprieta' CommandArgument del controllo figlio, quindi uno qualsiasi della tua query...
Il controllo figlio quindi, potrebbe essere questo (in una Templatecolumn - Itemtemplate)
codice:
<asp:LinkButton Text="uno"
CommandArgument='<%# Container.DataItem("nomecampo")%>'
CommandName="uno" Runat="server"></asp:LinkButton>
<asp:LinkButton Text="due"
CommandArgument='<%# Container.DataItem("nomecampo")%>'
CommandName="due" Runat="server"></asp:LinkButton>