菜单手风琴添加了第三级

时间:2019-06-06 10:30:57

标签: c# asp.net accordion

我是一个初学者(不是一个真正的英语讲者:)),我想将sitemapdatasource绑定到asp手风琴。 它可以在两个级别上正常运行,但不能在第三级上运行

我尝试过这个:

accordion 1
header container
first level

accordion 2
header container
second level
content container
third level

我有类似的东西:

menu 1
menu 1.1
menu 1.2
menu 2
...
and in the other accordion
menu 1.1.1 menu 1.1.2...
menu 2.1.1 menu 2.1.1

我阅读了很多关于此的主题,所以我只想知道我的示例是否应该工作(如果我只需要修复代码,如果我自己修复它会更好),或者我的想法很糟糕,我需要o寻找其他方法来解决此问题

MasterPage.master

   <ajaxToolkit:Accordion ID="myAccordion" runat="server" SuppressHeaderPostbacks="true" >
                        </ajaxToolkit:Accordion>

                        <ajaxToolkit:Accordion ID="myAccordion1" runat="server" SuppressHeaderPostbacks="true" >
                        </ajaxToolkit:Accordion>

MasterPage.master.cs(在page_load中)

  for (int i = 0; i < SiteMap.RootNode.ChildNodes.Count; i++)
        {
            //GRABS SITEMAP MAIN ITEMS (UNDER HOME)
            SiteMapNode smn = (SiteMapNode)SiteMap.RootNode.ChildNodes[i];

            //CREATES ACCORDION PANE
            AjaxControlToolkit.AccordionPane p = new AjaxControlToolkit.AccordionPane();

            //CREATE UNIQUE PANE ID
            p.ID = "Pane" + i;

            //CREATE HEADER ITEM
            HyperLink hlHeader = new HyperLink();
            hlHeader.NavigateUrl = SiteMap.RootNode.ChildNodes[i].Url.ToString();
            hlHeader.Text = SiteMap.RootNode.ChildNodes[i].Title.ToString();

            //ADDS HEADER LINK TO PANE (HEADER)
            p.HeaderContainer.Controls.Add(hlHeader);

            //CHECKS IF HEADER ITEM HAS CHILDREN
            if (smn.HasChildNodes)
            {
                AjaxControlToolkit.AccordionPane psub = new AjaxControlToolkit.AccordionPane();

                psub.ID = "Panel" + i;

                //CREATE BULLETED LIST OF CHILDREN
                BulletedList blMenu = new BulletedList();
                blMenu.DisplayMode = BulletedListDisplayMode.HyperLink;

                //CREATES LIST ITEMS WITHIN BULLETED LIST FOR CHILDREN
                for (int j = 0; j < smn.ChildNodes.Count; j++)
                {
                    blMenu.Items.Insert(0, (new ListItem(smn.ChildNodes[j].Title.ToString(), smn.ChildNodes[j].Url.ToString())));
                    HyperLink hlSubHeader = new HyperLink();
                    hlSubHeader.NavigateUrl = smn.ChildNodes[j].Url.ToString();
                    hlSubHeader.Text = smn.ChildNodes[j].Title.ToString();


                    psub.HeaderContainer.Controls.Add(hlSubHeader);

                    BulletedList blSubMenu = new BulletedList();
                    blSubMenu.DisplayMode = BulletedListDisplayMode.HyperLink;
                    for (int k = 0; k < smn.ChildNodes[j].ChildNodes.Count; k++)
                    {

                        blSubMenu.Items.Insert(0, (new ListItem(smn.ChildNodes[j].ChildNodes[k].Title.ToString(), smn.ChildNodes[j].ChildNodes[k].Url.ToString())));

                    }
                    psub.ContentContainer.Controls.Add(blSubMenu);
                   myAccordion1.Panes.Add(psub);

                }
                //ADDS BULLETED LIST TO PANE (CONTAINER)
                p.ContentContainer.Controls.Add(blMenu);   

            }
            //ADDS PANE TO ACCORDION
            myAccordion.Panes.Add(p);
        }

谢谢

0 个答案:

没有答案
相关问题