tkarnau
tkarnau

Reputation: 160

ASP.NET Ajax Accordion header event

in ASP.NET 4 Website

I need to fire a server side C# function when an ajax accordion header is clicked, passing the header data value to the function. The accordion is filled from a database. How do I create the event to call the C# function?

<ajaxToolkit:Accordion ID="acc1" runat="server" Width="300px" 
     HeaderCssClass="accHeader" ContentCssClass="accContent" CssClass="accMain"
     FadeTransitions="true" SuppressHeaderPostbacks="false" TransitionDuration="250" RequireOpenedPane="false"
     HeaderSelectedCssClass="accSelHeader" FramesPerSecond="40">
        <HeaderTemplate><b><%#DataBinder.Eval(Container.DataItem, "CompanyName") %></b></HeaderTemplate>
        <ContentTemplate>
        <%#DataBinder.Eval(Container.DataItem, "CompanyName") %><br />
        <%#DataBinder.Eval(Container.DataItem, "Street")%><br />
        <%#DataBinder.Eval(Container.DataItem, "City")%><br />
        <%#DataBinder.Eval(Container.DataItem, "StateOfFacility")%><br />
        <%#DataBinder.Eval(Container.DataItem, "ZipCode")%><br />
        <%#DataBinder.Eval(Container.DataItem, "Phone")%><br />
        <%#DataBinder.Eval(Container.DataItem, "URL")%><br />
        </ContentTemplate>
 </ajaxToolkit:Accordion>

Upvotes: 3

Views: 4129

Answers (1)

IUnknown
IUnknown

Reputation: 22448

Use LinkButton in header and handle ItemCommand event of Accordion as below:

 <HeaderTemplate>
      <asp:LinkButton runat="server" Text='<%# Eval("CompanyName") %>'  
           CommandName="Select" CommandArgument='<%# (int)Eval("Id")  %>' />
 </HeaderTemplate>

void acc1_ItemCommand(object sender, CommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
        var companyId = e.CommandArgument;
    }
}

Draw your attention that you need to provide companies unique identifier to distinguish clicked company pane.

Upvotes: 1

Related Questions