Usuário com melhor resposta
Acionar Evento

Pergunta
-
Bom Dia!
Eu tenho um gridview e numa das colunas coloquei um image button. Eu quero que ao clicar nesse image button, aconteça "alguma coisa", mas não estou conseguindo acionar o evento click desse botão.
O código está dessa forma:
Protected Sub imbTeste_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
............................
End Sub
Protected Sub gv_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gv.RowDataBound
If e.Row.RowType = DataControlRowType.Header Then
...........
ElseIf e.Row.RowType = DataControlRowType.DataRow Then
Dim imbTeste As ImageButton = TryCast(e.Row.FindControl("imbTeste"), ImageButton)imbTeste.ImageUrl = "~/img/xxx.gif"
AddHandler imbTeste.Click, AddressOf imbTeste_Click
End If
End Sub
Não está dando erro de compilação nem nada, mas também quando clico no botão, não está acionando o evento click.
Alguém pode me ajudar?
Obrigada
Respostas
-
Juliana,Você não precisa (e nem pode!) adicionar o RowCommand no evento click do botão. Esse evento é do GridView e é nele que você deve implementar.
gvwEstoque.RowCommand += new GridViewCommandEventHandler(gv_RowCommand);
Ao fazer isso, qualquer botão que estiver dentro do gridview, quando clicado, vai entrar nesse evento. Você só precisa tratar o sender e o e.Resumindo, ao clicar em um botão que está dentro de um GridView, o RowCommand é o evento disparado e não o evento Click do botão.
Paulo Castilho - www.paulocastilho.com.br- Sugerido como Resposta Paulo Castilho segunda-feira, 8 de março de 2010 16:55
- Marcado como Resposta Juliana Machado segunda-feira, 8 de março de 2010 18:14
Todas as Respostas
-
Eu fiz assim e deu
- Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
- Dim img As New ImageButton()
- AddHandler img.Click, AddressOf img_Click
- End Sub
- Private Sub img_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
- Throw New NotImplementedException()
- End Sub
-
-
Olá, Juliana.O que você fez funcionaria, se o botão não estivesse dentro do GridView.Como está dentro do GridView, implemente o evento RowCommand deste grid e teste clicar no botão.
Paulo Castilho - www.paulocastilho.com.br- Sugerido como Resposta Paulo Castilho segunda-feira, 8 de março de 2010 16:55
-
-
Paulo,
Criei o handler RowCommand para o gridview, mas não consigo dar 1 find control no image button para atribuir o evento click usando addhandler: Dim imbTeste As ImageButton = TryCast(e.Row.FindControl("imbTeste"), ImageButton). O event arg e não possui a propriedade Row!!
Seilor,
Fiz esse teste seu criando o image button fora do gridview (só para testar mesmo), e seguindo esse código que você me passou, e o evento click nunca é executado quando clico no botão. Tem certeza que não está faltando nada nesse seu código? -
-
Juliana,Você não precisa (e nem pode!) adicionar o RowCommand no evento click do botão. Esse evento é do GridView e é nele que você deve implementar.
gvwEstoque.RowCommand += new GridViewCommandEventHandler(gv_RowCommand);
Ao fazer isso, qualquer botão que estiver dentro do gridview, quando clicado, vai entrar nesse evento. Você só precisa tratar o sender e o e.Resumindo, ao clicar em um botão que está dentro de um GridView, o RowCommand é o evento disparado e não o evento Click do botão.
Paulo Castilho - www.paulocastilho.com.br- Sugerido como Resposta Paulo Castilho segunda-feira, 8 de março de 2010 16:55
- Marcado como Resposta Juliana Machado segunda-feira, 8 de março de 2010 18:14
-