2010-02-13 82 views
0

我想从用于呈现它的ASP.NET转发器之外的站点地图转发器访问当前的“活动”顶级节点,这是为了CSS样式目的我想以不同的样式水平放置后续行的子节点。目前我有下面的代码,我无法使用CSS正确显示。访问来自父Repeater外部的SiteMapNode Container.DataItem

<asp:SiteMapDataSource ID="topNavLevel" runat="server" ShowStartingNode="false" /> 
<asp:Repeater runat="server" ID="rptParent" DataSourceID="topNavLevel"> 
    <HeaderTemplate><ul id="lawMenu" class="topMenu"></HeaderTemplate> 
    <ItemTemplate> 
    <li> 
    <asp:HyperLink runat="server" ID="parentLink" NavigateUrl='<%# Eval("Url") %>'><span class="t"><%# Eval("Title") %></span><span class="l"></span><span class="r"></span></asp:HyperLink> 
    <asp:Repeater ID="rptChild" runat="server" DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>'> 
    <HeaderTemplate> 
     <ul> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <li> 
     <asp:HyperLink ID="childLink" runat="server" NavigateUrl='<%# Eval("Url") %>'><span class="t"><%# Eval("Title") %></span><span class="l"></span><span class="r"></span></asp:HyperLink> 
     </li> 
    </ItemTemplate> 
    <FooterTemplate> 
     </ul> 
    </FooterTemplate> 
    </asp:Repeater> 
    </li> 
    </ItemTemplate> 
    <FooterTemplate> 
    </ul></FooterTemplate> 
</asp:Repeater> 

我想展示我可以从一个单独的DIV,如果这不是用孩子中继器渲染做得很清楚接下来的淡蓝色元素的子节点。在下面的图片中,博客和服务是顶级节点,它们的后续节点(每个节点2个)应显示在下面的浅蓝色行中。这可能吗?

谢谢。

image http://yfrog.com/13captureayp

回答

0

获取父中继DataItem的,如果你没有你的孩子里面直放站:

<%# DataBinder.Eval(((System.Web.UI.WebControls.RepeaterItem)Container.Parent.Parent).DataItem, "Property") %> 
+0

嗨,尼克,你可以根据上述情况进行扩展吗?我需要列出当前节点(父)转发器的子元素。这需要以一个单独的div元素的形式,并在其中创建新的子中继器。谢谢你的帮助。 – user260012 2010-02-15 11:16:32

0

我现在已经解决了这个。对于任何人碰到这个职位来这里是解决方案:

<asp:SiteMapDataSource ID="topNavLevel" runat="server" ShowStartingNode="false" /> 
      <asp:Repeater runat="server" ID="rptParent" DataSourceID="topNavLevel"> 
       <HeaderTemplate> 
        <ul id="lawmenu" class="law-menu"> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <li> 
         <asp:HyperLink runat="server" ID="parentLink" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink> 
        </li> 
       </ItemTemplate> 
       <FooterTemplate> 
        </ul> 
     </FooterTemplate> 
      </asp:Repeater> 
      </div> 
      <div class="law-nav_nav2"> 
      <asp:SiteMapDataSource ID="secondNavLevel" runat="server" ShowStartingNode="false" StartingNodeOffset="1" /> 
       <asp:Repeater ID="rptChild" runat="server" DataSourceID="secondNavLevel"> 
          <HeaderTemplate> 
           <ul class="law-menu_nav2"style="z-index:100"> 
          </HeaderTemplate> 
          <ItemTemplate> 
          <li> 
          <asp:HyperLink ID="childLink" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink> 
          </li> 
          </ItemTemplate> 
          <FooterTemplate> 
           </ul> 
          </FooterTemplate> 
         </asp:Repeater> 
      </div> 

的HeaderTemplate中需要照顾的列表容器造型则中继器的项目都列了出来一次一个与1对当前节点的偏移。这看起来很简单,基于我在网上看到的,我对ASP.NET的某些元素只是相当新颖:)谢谢。