2012-03-24 88 views
0

網站地圖的第二級我有一個網站地圖是這樣的:顯示的網站導航

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap> 
    <siteMapNode title="Home" > 
    <siteMapNode title="Services" > 
     <siteMapNode title="Training" url="~/Training.aspx"/> 
    </siteMapNode> 
    </siteMapNode> 
</siteMap> 

現在我想顯示在不同的部門網站地圖的第二級。

<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" /> 
<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1"> 
    <asp:HyperLink ID="menu_items" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink> 
</asp:Repeater> 
<div class="separator"></div> 
//Here must child Node(s) displayed 
//e.g. return <a href="~Training.aspx">Training</a> 

回答

1

要顯示基本報告,篩選報告和自定義格式SiteMapNodes的子項,我們可以將其他Repeater添加到最初的Repeater的ItemTemplate。這第二個Repeater將綁定到的SiteMapNode實例節點的childNodes屬性,像這樣:

<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1"> 
    <ItemTemplate> 
     <li> 
      <asp:HyperLink runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink> 

      <asp:Repeater runat="server" DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>'> 
       <HeaderTemplate> 
        <ul> 
       </HeaderTemplate> 

       <ItemTemplate> 
        <li> 
         <asp:HyperLink runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink> 
        </li> 
       </ItemTemplate> 

       <FooterTemplate> 
        </ul> 
       </FooterTemplate> 
      </asp:Repeater> 
     </li> 
    </ItemTemplate> 
</asp:Repeater> 

這兩個中繼器導致下面的標記(一些標記已爲簡潔起見被移除):

<li> 
    <a href="/Code/BasicReporting/Default.aspx">Basic Reporting</a> 
    <ul> 
     <li> 
      <a href="/Code/BasicReporting/SimpleDisplay.aspx">Simple Display</a> 
     </li> 
     <li> 
      <a href="/Code/BasicReporting/DeclarativeParams.aspx">Declarative Parameters</a> 
     </li> 
     <li> 
      <a href="/Code/BasicReporting/ProgrammaticParams.aspx">Setting Parameter Values</a> 
     </li> 
    </ul> 
</li> 

<li> 
    <a href="/Code/Filtering/Default.aspx">Filtering Reports</a> 
    ... 
</li> 

<li> 
    <a href="/Code/CustomFormatting/Default.aspx">Customized Formatting</a> 
    ... 
</li> 

取自:http://msdn.microsoft.com/en-us/library/aa581781.aspx

1

你需要指定一個新的SiteMapDataSource的起始節點,儘管我不知道,如果這是最好的辦法。我相信,一次讀取代碼隱藏中的所有節點會更好,然後使用此源將實際頁面填充到您想要的數據。 之所以這樣做,是因爲我並不是一個混合邏輯(將某些數據源綁定到元素當然是邏輯部分)的巨大粉絲。是的,只是用數據源來發送aspx文件很容易,但我不相信這是最好的方法。