Ho fatto la stessa cosa tua in questo modo :

codice:
<asp: DataGrid DataKeyField="ChiavePrimaria" runat="server" 
<columns>
  <asp:BoundColumn headertext="campo1"        
   DataField="campo1"></asp:BoundColumn>
  
  <asp:TemplateColumn headertext="Cancella">
  <itemtemplate>
    <asp:checkbox runat="server" id="cbcancella" />
  </itemtemplate>
  </asp:TemplateColumn>
</columns>
</asp: DataGrid>	

<asp:button OnClick="cancella" Runat="server" id="bncancella" text="Cancella selezionati" />
la sub di cancellazione :
codice:
	Public Sub cancella(sender As Object, e As System.EventArgs)
		Dim dgItem As DataGridItem
		for each dgItem in tuoDatagrid.Items
			if CType(dgItem.Cells( X ).Controls( X ), CheckBox ).checked then
                             sfrutti tuoDataGrid.dataKeys(dgItem.ItemIndex) per fare la cancellazione
			end if
		next
        End Sub
per "dgItem.Cells( X ).Controls( X ) " intendo raggiungere la checkbox con gli indici delle celle e quelli dei loro controlli ...