2011-09-07 102 views
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並返回。但我不確定如何在該級別導航。 : -/

回答

0

您是否考慮過使用內置的站點地圖功能? FindSiteMapNodeFromKey

如果你不需要處理一堆xml,那麼沒有意義。

+0

猜猜我錯過了。我想我必須閱讀:-) – janhartmann

+0

我只想完全控制正在發生的事情 – janhartmann