Muy chulo el gridview de coches. Lo puedes hacer de dos formas.
Esta primera forma lo puedes hacer creandote un Label visible que sea false y recoges el valor, cuando hagas click sobre la lupa.
Te pongo un ejemplo.
Código:
<asp:GridView ID="MiGridViewCoches" runat="server" >
<Columns>
<asp:TemplateField HeaderText=""
ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:Label ID="LblCoche" runat="server" Text='<%# Eval("IdMarca") %>' Visible="False" ></asp:Label>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderText=" "
ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:ImageButton runat="server" ID="ImgLupa" ImageUrl="~/Lupa.png" Width="26px" CommandName="image" OnClick="ClickLupa" ToolTip="Ver Marca" />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
</asp:TemplateField>
</asp:GridView>
Y el CodeBehind sería así:
Código:
protected void ClickLupa (object sender, EventArgs e)
{
ImageButton imageButton = (ImageButton)sender;
TableCell tableCell = (TableCell)imageButton.Parent;
GridViewRow row = (GridViewRow)tableCell.Parent;
MiGridViewCoches.SelectedIndex = row.RowIndex;
int fila = row.RowIndex;
string IdRecogido = ((Label)row.Cells[fila].FindControl("LblCoche")).Text;
Response.Redirect("Mostrar.aspx?Id="+IdRecogido)
}