Solved

Find control inside accordion using c#

Posted on 2008-10-10
10
6,844 Views
Last Modified: 2013-12-17
hello experts,

       i am using a datagrid inside accordion pane.I want to bind the dagrid to a datasource for which i need to find the control inside the
content template of accordion.

How to find the control???

URGENT..Thanks.

Please check the snippet for my aspx page.
<ajaxToolkit:Accordion ID="acc1" runat="server" SelectedIndex="1" FadeTransitions="true" FramesPerSecond="40" TransitionDuration="250" AutoSize="None" RequireOpenedPane="false" HeaderCssClass="HeaderTab">

                                                    <HeaderTemplate>

                                                        Select Distributor</HeaderTemplate>

                                                    <ContentTemplate>

                                                        <asp:DataGrid ID="dgReports" GridLines="None" CellSpacing="0" CellPadding="0" ShowHeader="false" AutoGenerateColumns="False" AllowSorting="false" runat="server" DataKeyField="ProjectID">

                                                            <Columns>

                                                                <asp:TemplateColumn Visible="False" HeaderText="Project ID">

                                                                    <ItemTemplate>

                                                                        <asp:Label ID="lblProjectID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.USER_NM") %>'>
 

                                                                        </asp:Label>

                                                                    </ItemTemplate>

                                                                </asp:TemplateColumn>

                                                                <asp:TemplateColumn>

                                                                    <ItemTemplate>

                                                                        <ul style="list-style-type: square">

                                                                            <li><a href='IssueReport.aspx?ProjectId=<%# DataBinder.Eval(Container.DataItem, 

"ProjectId")%>'>

                                                                                <%# DataBinder.Eval(Container.DataItem, "USER_NM")%>

                                                                            </a></li>

                                                                        </ul>

                                                                    </ItemTemplate>

                                                                </asp:TemplateColumn>

                                                            </Columns>

                                                        </asp:DataGrid>

                                                    </ContentTemplate>

                                                </ajaxToolkit:Accordion>

Open in new window

0
Comment
Question by:srk1982
  • 5
  • 4
10 Comments
 
LVL 3

Expert Comment

by:trunghieubkit
ID: 22685238
Your datagrid control's name is dgReports

You can assign it's datasource as below

        DataViewManager dsView;
        dgReports.DataSource = dsView;
        dgReports.DataMember = tablename;


0
 

Author Comment

by:srk1982
ID: 22685251
hi trunghieubkit,

     My problem is not in assigning the datasource to datagrid
  I want to find the control inside accordion....

i am using this code..but it is not woking...

        DataSet dsDistibutors = Fund.GetAllDistibutor();
        DataGrid dg = (DataGrid)accordion1.FindControl("dgReports");
        dg.DataSource = dsDistibutors;
        dg.DataBind();
0
 
LVL 4

Expert Comment

by:sijishJohn
ID: 22685377
hi srk1982,

bind the gridview inside Accordion1_ItemDataBound...

Refer this link...

http://aspalliance.com/1674_Complex_Data_Binding_with_the_Accordion_Control.all
protected void Accordion1_ItemDataBound(object sender, AjaxControlToolkit.AccordionItemEventArgs e)

        {

            if (e.ItemType != AjaxControlToolkit.AccordionItemType.Content)

                return;

            GridView grid = e.AccordionItem.FindControl("GridView1") as GridView;            

            grid.DataSource = "Your DataSet";

            grid.DataBind();
 

        }

Open in new window

0
 

Author Comment

by:srk1982
ID: 22685585
hi sijishJohn,

  I did the following code in  snippet. But the Itemdatabound event is not at all firing.
Am i missing anything ????

please help.....thanks,..
 protected void acc1_ItemDataBound(object sender, AjaxControlToolkit.AccordionItemEventArgs e)

    {

        if (e.ItemType != AjaxControlToolkit.AccordionItemType.Content)

            return;

        DataSet dsDistibutors = Fund.GetAllDistibutor();

        DataGrid grid = e.AccordionItem.FindControl("dgReports") as DataGrid;

        if (grid == null) return;

        grid.DataSource = dsDistibutors;

        grid.DataBind();

    }
 
 
 

 <ajaxToolkit:Accordion ID="acc1" runat="server" SelectedIndex="1" FadeTransitions="true" 

                                                FramesPerSecond="40" TransitionDuration="250" AutoSize="None" RequireOpenedPane="false" 

                                                HeaderCssClass="HeaderTab" >

                                                    <HeaderTemplate>

                                                        Select Distributor</HeaderTemplate>

                                                    <ContentTemplate>

                                                        <asp:DataGrid ID="dgReports" GridLines="None" CellSpacing="0" CellPadding="0" ShowHeader="false" AutoGenerateColumns="False" AllowSorting="false" runat="server" DataKeyField="ProjectID">

                                                            <Columns>

                                                                <asp:TemplateColumn Visible="False" HeaderText="Project ID">

                                                                    <ItemTemplate>

                                                                        <asp:Label ID="lblProjectID" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.USER_NM") %>'>
 

                                                                        </asp:Label>

                                                                    </ItemTemplate>

                                                                </asp:TemplateColumn>

                                                                <asp:TemplateColumn>

                                                                    <ItemTemplate>

                                                                        <ul style="list-style-type: square">

                                                                            <li><a href='IssueReport.aspx?ProjectId=<%# DataBinder.Eval(Container.DataItem, 

"ProjectId")%>'>

                                                                                <%# DataBinder.Eval(Container.DataItem, "USER_NM")%>

                                                                            </a></li>

                                                                        </ul>

                                                                    </ItemTemplate>

                                                                </asp:TemplateColumn>

                                                            </Columns>

                                                        </asp:DataGrid>

                                                    </ContentTemplate>

                                                </ajaxToolkit:Accordion>

Open in new window

0
 
LVL 4

Expert Comment

by:sijishJohn
ID: 22685714
you have to bind the Accordion control in the page_load event..
then only its temdatabound event will fire...

eg.
string Name = "Experts-exchange";
Accordion1.DataSource = Name;
Accordion1.DataBind();
0
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

 
LVL 4

Accepted Solution

by:
sijishJohn earned 500 total points
ID: 22685745
You have to register the ItemDataBound event like this..
<ajaxToolkit:Accordion ID="acc1" runat="server" SelectedIndex="1" FadeTransitions="true" 

                                                FramesPerSecond="40" TransitionDuration="250" AutoSize="None" RequireOpenedPane="false" 

                                                HeaderCssClass="HeaderTab"   OnItemDataBound="acc1_ItemDataBound">

Open in new window

0
 

Author Comment

by:srk1982
ID: 22685939
hi sijishJohn,

     I accomplished the task, by doing the code in snippet.
public void accordion()

    {

        DataSet dsDistibutors = Fund.GetAllDistibutor();

        AccordionPane ap1 = new AccordionPane();

        ap1.HeaderContainer.Controls.Add(new LiteralControl("Select Distributor"));

        ap1.ContentContainer.Controls.Add(GetRadioButtonList());

        Accordion1.Panes.Add(ap1);

    }

    private RadioButtonList GetRadioButtonList()

    {

        DataSet dsDistibutors = Fund.GetAllDistibutor();

        RadioButtonList RBList = new RadioButtonList();

        RBList.DataSource = dsDistibutors;

        RBList.DataTextField = "USER_NM";

        RBList.DataValueField = "USER_NM";

        RBList.DataBind();

        RBList.AutoPostBack = true;

        return RBList;

    }

Open in new window

0
 

Author Closing Comment

by:srk1982
ID: 31504928
Thanks for u r contribution
0
 
LVL 4

Expert Comment

by:sijishJohn
ID: 22685963
Good Work...Keep going..
0
 

Author Comment

by:srk1982
ID: 22686007
hi sijishJohn,

I have posted one question in this link.
This post is the continuation of this post. For gettign the value of selected item of radiobuttonlist in accordion.

   http://www.experts-exchange.com/Programming/Languages/.NET/Visual_CSharp/Q_23803820.html

Please do help for this also...
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now