LinkButton não dispara o evento OnClick em acordeão
-
24-09-2019 - |
Pergunta
Não consegui obter o ponto de interrupção que tenho no linkbuttondelete_click para disparar. Existe um truque para lidar com botões dentro dos acordeões do Ajax? Obrigada.
<cc1:Accordion ID="Accordion1" runat="server" DataSourceID="ObjectDataSource1"
SelectedIndex="-1" RequireOpenedPane="false">
<HeaderTemplate>
<asp:Label ID="LabelDisplayName" runat="server" Text='<%#Bind("FirstName") %
>'></asp:Label>
</HeaderTemplate>
<ContentTemplate>
<asp:LinkButton ID="LinkButtonDelete" runat="server"
OnClick="LinkButtonDelete_Click" Text="Delete"></asp:LinkButton>
...
</ContentTemplate>
</cc1:Accordion>
Public Sub LinkButtonDelete_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim button As LinkButton = CType(sender, LinkButton)
...
End Sub
Usando o evento ItemCommand:
<cc1:Accordion ID="Accordion1" runat="server" DataSourceID="ObjectDataSource1"
SelectedIndex="-1" RequireOpenedPane="false">
<HeaderTemplate>
<asp:Label ID="LabelDisplayName" runat="server" Text='<%#Bind("FirstName") %
>'></asp:Label>
</HeaderTemplate>
<ContentTemplate>
<asp:LinkButton ID="LinkButtonDelete" runat="server"
CommandName="Remove" Text="Delete"></asp:LinkButton>
...
</ContentTemplate>
</cc1:Accordion>
Private Sub Accordion1_ItemCommand(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs) Handles Accordion1.ItemCommand
If e.CommandName = "Remove" Then
'Do stuff
End If
End Sub
Solução 2
Este é realmente um bug e foi parcialmente corrigido no Ajax Control Toolkit versão 3.0.31106.0. Uma etapa adicional é necessária por algum motivo (outras pessoas parecem não precisar desta etapa?). Eu tenho que re-controlar o acordeão na página carregar todas as vezes e agora funciona perfeitamente.
Outras dicas
Como você não está especificando quem desenvolveu esse controle, estou basicamente adivinhando a funcionalidade interna. Mas uma possibilidade é que o evento do botão Link esteja sendo consumido pelo controle de acordeão (apesar de você estar definindo explicitamente o manipulador de eventos OnClick do LinkButton.
Veja os eventos do acordeão para ver se há um evento de clique (ou similar) acessível para o qual você possa codificar.
EDITAR:
OK. Agora, eu sei qual controle de acordeão você está usando, eu sei um pouco mais. Minha próxima pergunta é quando foi a última vez que você atualizou as DLLs do Ajax Control Toolkit? Se já faz um tempo, houve um bug em relação aos contêineres de nomeação adequados para o controle. Os detalhes disso podem ser encontrados aqui: http://ajaxcontroltoolkit.codeplex.com/workitem/view.aspx?workitemid=11615
Foi corrigido e corrigido em maio de 2009.