我是一个初学者(不是一个真正的英语讲者:)),我想将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);
}
谢谢