Precisei de colocar um ButtonField / Image na minha GridView para poder excluir uma linha do grid, então percebi que o .Net não consegue trabalhar com os Image da forma correta, como é feita com o LinkButton isso ocorre por causa da forma que o controle é renderizado, veja abaixo:
ImageButton:
<input type="image" ... > |
LinkButton:
<a onclick="javascript:__doPostBack(...)"><img src="..."></a> |
A solução para isso é ridiculamente simples, é só colocar o controle em modo template e adicionar um LinkButton e dentro dele uma Imagem, assim:
<asp:LinkButton ID="imgRemover" runat="server" CommandName="Remover" > <asp:Image ID="imgRemoverImage" ImageUrl="~/Resources/item_remove.gif" ToolTip="" runat="server" /> </asp:LinkButton> |
Depois se você precisar pegar o número da linha que foi clicada no grid você pode fazer isso:
1 2 3 4 5 6 7 8 9 10 11 12 | protected void gvSeriais_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName.Equals("Remover")) { // pegando a linha que foi clicada WebControl wc = ((WebControl)e.CommandSource); GridViewRow selectrow = ((GridViewRow)wc.NamingContainer); // pegando a celula que está a chave primaria (id) TableCell contactcell = selectrow.Cells[0]; String serial = contactcell.Text.ToString(); } } |