0
我有一個XML網站這樣上市樹狀結構基於父
<?xml version="1.0" encoding="utf-8" ?>
<Menu>
<MenuItem Name="Page 1" Url="~/page1.aspx">
<MenuItem Name="SubPage 1" Url="~/subpage1.aspx" />
</MenuItem>
<MenuItem Name="Page 2" Url="~/page2.aspx">
<MenuItem Name="SubPage 1" Url="~/subpage1.aspx" />
<MenuItem Name="SubPage 2" Url="~/subpage2.aspx">
<MenuItem Name="ThirdLevel 1" Url="~/thirdlevel1.aspx" />
<MenuItem Name="ThirdLevel 2" Url="~/thirdlevel2.aspx" />
<MenuItem Name="ThirdLevel 3" Url="~/thirdlevel3.aspx" />
</MenuItem>
<MenuItem Name="SubPage 3" Url="~/subpage3.aspx" />
</MenuItem>
<MenuItem Name="Page 3" Url="~/page3.aspx" />
</Menu>
而一個recusive功能循環這一切出來的<ul>
菜單是這樣的:
// ^^^ loaded all into an XmlNodeList
private void CreateMenuItems(HtmlTextWriter writer, XmlNodeList menuitems)
{
writer.RenderBeginTag(HtmlTextWriterTag.Ul);
foreach (XmlNode item in menuitems)
{
writer.RenderBeginTag(HtmlTextWriterTag.Li);
writer.AddAttribute(HtmlTextWriterAttribute.Href, this.ResolveUrl(item.Attributes["Url"].Value));
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(item.Attributes["Name"].Value);
writer.RenderEndTag();
if (item.HasChildNodes)
{
// Recusive funktion
CreateMenuItems(writer, item.ChildNodes);
}
writer.RenderEndTag();
}
writer.RenderEndTag();
}
所有這工作非常好,它列出了所有樹狀菜單結構。
這是很好,當我想創建一個DropDown菜單。但是因爲我想要一個邊欄中的子頁面,所以我需要創建一個新的Web控件,它根據上面的父項目列出當前頁面結構。
因此,如果我在「第2頁」,我想要一個控件來獲取「頁面2」中的項目 - 小孩節點。如果我點擊「子頁面2」我希望它從上父「第2頁」像列出所有:
Page 1
Page 2 *click*
------------ SUB MENU I WANT TO LIST -------------
--> SubPage 1
--> SubPage 2 *click*
--> ThirdLevel 1
--> ThirdLevel 2
--> Third Level 3 *current page*
--> SubPage 3
------------ SUB MENU I WANT TO LIST -------------
Page 3
我知道我需要檢測當前的URL,找到的XmlNode並返回。但我不確定如何在該級別導航。 : -/
猜猜我錯過了。我想我必須閱讀:-) – janhartmann
我只想完全控制正在發生的事情 – janhartmann