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
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top