LinkButton not firing OnClick event in Accordion

2019-08-11 07:58发布

I have not been able to get the break point I have on LinkButtonDelete_Click to fire. Is there a trick to dealing with buttons inside of AJAX Accordions? Thank you.

<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

Using the ItemCommand Event:

<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

2条回答
我欲成王,谁敢阻挡
2楼-- · 2019-08-11 08:32

This is indeed a bug and has been partially fixed in AJAX Control Toolkit Version 3.0.31106.0. An additional step is necessary for some reason (other people seem to not need this step??). I have to re-databind the accordion on page load every single time and it now works flawlessly.

查看更多
何必那么认真
3楼-- · 2019-08-11 08:37

Since you're not specifying who developed this control, I'm basically guessing as to the inner functionality. But one possibility is that the event from the link button is being consumed by the accordion control (despite the fact that you are explicitly defining the linkbutton's onclick event handler.

Look at the accordion's events to see if there is a click (or similar) event accessible that you can code against.

EDIT:

Okay. Now, that I know which accordion control you're using, I know a bit more. My next question is when was the last time that you refreshed the AJAX Control Toolkit's DLLs? If it has been a while, then there was at one time a bug regarding proper naming containers for the control. The details of this can be found here: http://ajaxcontroltoolkit.codeplex.com/WorkItem/View.aspx?WorkItemId=11615

It was patched and fixed back in May of 2009.

查看更多
登录 后发表回答