Usuário com melhor resposta
como criar um evento quando clicar em alguma linha do gridview

Pergunta
-
Olá amigos, como criar um evento quando clicar em alguma linha do gridview sem a necessidade de botão, por exemplo: tenho uma coluna de imagens e quando clicar em alguma imagem independente da linha realizar algum evento, tenho muitas duvidas em relação a isso, então se vocês tiverem alguma outra forma de realizar isso irei agradecer muito, obrigado.
Respostas
-
Lennon, Bom dia.
Existem dois jeitos de se fazer isso, uma rodando um evento no lado servidor através de algum comando e o mesmo é captura no lado servidor através do CommandName da função OnRowCommand a outra maneira seria executar no lado cliente, na hora que você for montar a GridViews você chama o Evento RowDataBound, esse evento é chamado no momento em que sua GridViews foi montada, você captura a linha atual, define uma div com o evento de OnClick, exemplo:
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e) { if(e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[1].Text = "<a onclick='Alert('Clicou');' style=' display:block; width:100%; height:30px; '>" + e.Row.Cells[1].Text + "</i>"; } }
Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com
- Marcado como Resposta Giovani Cr quinta-feira, 13 de março de 2014 14:55
-
Olá,
Bom, você pode adicionar uma TemplateField em alguma coluna do seu GridView e adicionar na ItemTemplate um ImageButton que vai cumprir este papel:
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:ImageButton ID="ImageButton1" runat="server" CommandName="Editar" ImageUrl=".." /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
O controle ImageButton é uma imagem com características de botão (ou vice-versa).
A propriedade ImageUrl é a Url da imagem.
CommandName e CommandArgument são o nome e o(s) argumento(s) do comando que você vai atribuir (cfme. sua necessidade) ao controle para manipular no evento GridView1_RowCommand:
Fiz este exemplo, espero que ajude:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { DataTable table = new DataTable(); table.Columns.Add("A"); table.Columns.Add("B"); table.Columns.Add("C"); table.Rows.Add("A..", "B..", "C.."); table.Rows.Add("A..", "B..", "C.."); table.Rows.Add("A..", "B..", "C.."); GridView1.DataSource = table; GridView1.DataBind(); } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Editar") Response.Write(e.CommandName + " - " + e.CommandArgument); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { ImageButton ibtn = new ImageButton(); ibtn = (ImageButton) e.Row.Cells[0].FindControl("ImageButton1"); ibtn.CommandArgument = e.Row.RowIndex.ToString(); } }
- Marcado como Resposta Giovani Cr quinta-feira, 13 de março de 2014 14:55
Todas as Respostas
-
Olá,
Bom, você pode adicionar uma TemplateField em alguma coluna do seu GridView e adicionar na ItemTemplate um ImageButton que vai cumprir este papel:
<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" OnRowDataBound="GridView1_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:ImageButton ID="ImageButton1" runat="server" CommandName="Editar" ImageUrl=".." /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
O controle ImageButton é uma imagem com características de botão (ou vice-versa).
A propriedade ImageUrl é a Url da imagem.
CommandName e CommandArgument são o nome e o(s) argumento(s) do comando que você vai atribuir (cfme. sua necessidade) ao controle para manipular no evento GridView1_RowCommand:
Fiz este exemplo, espero que ajude:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { DataTable table = new DataTable(); table.Columns.Add("A"); table.Columns.Add("B"); table.Columns.Add("C"); table.Rows.Add("A..", "B..", "C.."); table.Rows.Add("A..", "B..", "C.."); table.Rows.Add("A..", "B..", "C.."); GridView1.DataSource = table; GridView1.DataBind(); } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Editar") Response.Write(e.CommandName + " - " + e.CommandArgument); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { ImageButton ibtn = new ImageButton(); ibtn = (ImageButton) e.Row.Cells[0].FindControl("ImageButton1"); ibtn.CommandArgument = e.Row.RowIndex.ToString(); } }
- Marcado como Resposta Giovani Cr quinta-feira, 13 de março de 2014 14:55
-
Lennon, Bom dia.
Existem dois jeitos de se fazer isso, uma rodando um evento no lado servidor através de algum comando e o mesmo é captura no lado servidor através do CommandName da função OnRowCommand a outra maneira seria executar no lado cliente, na hora que você for montar a GridViews você chama o Evento RowDataBound, esse evento é chamado no momento em que sua GridViews foi montada, você captura a linha atual, define uma div com o evento de OnClick, exemplo:
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e) { if(e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[1].Text = "<a onclick='Alert('Clicou');' style=' display:block; width:100%; height:30px; '>" + e.Row.Cells[1].Text + "</i>"; } }
Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com
- Marcado como Resposta Giovani Cr quinta-feira, 13 de março de 2014 14:55