2010-02-13 42 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的某些元素只是相當新穎:)謝謝。