2011-01-13 16 views
1

Die oben ist mein ASP.NET-CodeASP.NET Sitemap nicht Knoten Anzeige Kind asp mit: Repeater

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

und hier ist die Sitemap

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="~/Default.aspx" title="Homepage"> 
    <siteMapNode url="~/Login.aspx" title="Login"/> 
    <siteMapNode url="~/News.aspx" title="News"/> 
    <siteMapNode url="~/Preferences.aspx" title="Preferences"/> 
    </siteMapNode> 
</siteMap> 

Das Problem mit obigem Code ist, dass es zeigt nur den übergeordneten Knoten (~/Default.aspx), aber wenn ich das Menu- oder TreeView-Steuerelement verwende und die SiteMapDataSource spezifiziere, funktioniert alles ordnungsgemäß. Kannst du bitte herausfinden, wo ich falsch liege?

Antwort

2

Legen Sie ShowStartingNode = "false" in SiteMapDataSource-Markup fest.

+0

Ja das funktioniert, aber können Sie mir sagen, was das Problem war? Ich möchte, dass alle Knoten angezeigt werden, einschließlich der Heimatadresse. – Tux

+0

Das SiteMapDataSource-Steuerelement gibt die Site Map-Hierarchie eine Ebene nach der anderen zurück, beginnend mit dem Root-Site-Map-Knoten. Durch Setzen von ShowStartingNode = false umgeht es den Root-Knoten und startet mit Home. Ich schlage vor, Sie lesen http://www.asp.net/data-access/tutorials/master-pages-and-site-navigation-cs –

0

Vijays Vorschlag und Kommentar link schließlich lieferte die Antwort für mich auch.

Die zusammenfassende Version ist verschachtelte Repeater, sowie die Einstellung ShowStartingNode = false. Für die Nachwelt, Code aus dem obigen Link:

<asp:SiteMapDataSource ID="siteMapDataSource1" runat="server" ShowStartingNode="false" /> 
<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>