Usuário com melhor resposta
Pegar dados da linha de um Gridview, usando um botão.

Pergunta
-
Olá pessoal
Tenho aqui um Gridview com um botão em cada linha.
Minha intenção é recuperar os dados da linha quando clicar no botão correspondente.Criei o código a seguir dentro do evento RowCommand do GridView:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName=="validar") { GridViewRow linha = (GridViewRow)((Button)e.CommandSource).NamingContainer; Label1.Text = linha.Cells[2].Text; } }
Ele compila, mas quando executo o clico no botão, uma exption de cast é lançada:
Unable to cast object of type 'System.Web.UI.WebControls.GridView' to type 'System.Web.UI.WebControls.Button'.
Obrigado desde já pela ajuda!!
Respostas
-
Olá, leia 1 o index de sua linha(row) usando CommandArgument e depois vc consegue ler normalmente o valor da celula de acordo com o indice por exemplo :
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "validar") { int index = int.Parse(e.CommandArgument.ToString()); Label1.Text = GridView1.Rows[index].Cells[2].Text; Response.Write(GridView1.Rows[index].Cells[2].Text); } }
- Marcado como Resposta Rodrigo Calado segunda-feira, 14 de abril de 2014 13:14
Todas as Respostas
-
-
Na verdade é um Gridview
Este é o codigo que implementa ele:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None" onrowdatabound="GridView1_RowDataBound" Width="888px" onselectedindexchanged="GridView1_SelectedIndexChanged"> <AlternatingRowStyle BackColor="White" /> <Columns> <asp:CommandField SelectText="Validar" ShowSelectButton="True" /> <asp:HyperLinkField DataNavigateUrlFields="id" DataNavigateUrlFormatString="~/Ssituacao/detalhesValidar.aspx?id={0}" Text="Detalhes" /> <asp:BoundField DataField="id" HeaderText="id" SortExpression="id" /> <asp:BoundField DataField="situacaoDesejada" HeaderText="Situação Desejada" SortExpression="situacaoDesejada" /> <asp:BoundField DataField="acaoViabilizadora" HeaderText="Ação Viabilizadora" SortExpression="acaoViabilizadora" /> </Columns> <EditRowStyle BackColor="#2461BF" /> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#EFF3FB" /> <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> <SortedAscendingCellStyle BackColor="#F5F7FB" /> <SortedAscendingHeaderStyle BackColor="#6D95E1" /> <SortedDescendingCellStyle BackColor="#E9EBEF" /> <SortedDescendingHeaderStyle BackColor="#4870BE" /> </asp:GridView>
-
Olá, leia 1 o index de sua linha(row) usando CommandArgument e depois vc consegue ler normalmente o valor da celula de acordo com o indice por exemplo :
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "validar") { int index = int.Parse(e.CommandArgument.ToString()); Label1.Text = GridView1.Rows[index].Cells[2].Text; Response.Write(GridView1.Rows[index].Cells[2].Text); } }
- Marcado como Resposta Rodrigo Calado segunda-feira, 14 de abril de 2014 13:14
-