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 ... 