ya okas, mira, en el caso de recuperar el id mientras se recorre una serie de checkboxs, yo lo hago de una 3ra forma, que es recuperandolas de un label invisible, la primera columna se declara algo asi, creo que el id que recuperas se llama 'dato'...
Código HTML:
Ver original.....
<Columns>
<asp:TemplateColumn HeaderText="dato" Visible="false">
<ItemTemplate>
<asp:Label ID="lblDato" Text='<%# DataBinder.Eval(Container.DataItem,"dato") %>' runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="Selector" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="usuario" HeaderText="usuario" ReadOnly="True"
SortExpression="usuario">
<FooterStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="hora" HeaderText="hora" ReadOnly="True"
SortExpression="hora">
<FooterStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Width="100px" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="tipo" HeaderText="tipo" SortExpression="tipo">
<ControlStyle Width="20px" />
<FooterStyle Width="20px" Wrap="False" />
<HeaderStyle Width="20px" Wrap="False" />
<ItemStyle Width="100px" Wrap="False" />
</asp:BoundField>
<asp:BoundField ItemStyle-Width="1" DataField="dato" HeaderText="dato"
SortExpression="dato" ReadOnly="true">
<ItemStyle Width="100px" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
</Columns>
......
don el lbl esta aqui:
<asp:TemplateColumn HeaderText="dato" Visible="false">
<ItemTemplate>
<asp:Label ID="lblDato" Text='<%# DataBinder.Eval(Container.DataItem,"dato") %>' runat="server" />
</ItemTemplate>
</asp:TemplateColumn>
y en la funcion seria algo asi: (en VB)
Código vb:
Ver originalSub ShowSelections(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim dgItem As DataGridItem
Dim chkSelected As CheckBox
Dim strid As String
For Each dgItem In ItemsGrid.Items
chkSelected = dgItem.FindControl("Selector")
If chkSelected.Checked Then
strid = CType(dgItem.FindControl("lblDato"), Label).Text
End If
Next
.....
End Sub
basicamente la linea 'CType(dgItem.FindControl("lblDato"), Label).Text ' recupera el id, asi que puedes meterla a un string, o lo que necesites.