Přístup SiteMapNode Container.DataItem z vnější strany mateřské Repeater

hlasů
0

Snažím se získat přístup k aktuální ‚aktivní‘ na nejvyšší úrovni uzlu z sitemap opakovače z vnějšku opakovače ASP.NET použitého k jeho vykreslení, to je pro účely CSS styling, jak chci umístit podřízené uzly v následujících řádcích se liší styling vodorovně. V současné době mám následující kód, který nemohu dostat ke správnému zobrazení pomocí CSS.

<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>

Chtěl bych zobrazit podřízené uzly na další světle modrým prvkem, který se dá dělat dobře ze samostatného div, jestli to nebyl vykreslen s použitím dětské opakovač. Na obrázku níže blogu a služby jsou špičkové uzly úrovni a jejich subseqent uzly (2 pro každého) by měly být zobrazeny na světle modrém řádku pod. Je to možné?

Dík.

obraz http://yfrog.com/13captureayp

Položena 13/02/2010 v 01:55
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

Vyřešil jsem to teď. Pro nikoho jiného přicházející přes tento post tady je řešení:

<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 pečuje o styling seznam kontejneru pak opakovače položky jsou uvedeny ven jeden po druhém s posunem 1 pro aktuálního uzlu. Vypadá to jednoduše na základě toho, co jsem viděl na celém internetu, jsem se některé prvky ASP.NET :) Díky jen poměrně nová.

Odpovězeno 15/02/2010 v 14:18
zdroj uživatelem

hlasů
0

Chcete-li získat mateřské Repeater DataItem, jako byste nebyli uvnitř vašeho dítěte opakovače:

<%# DataBinder.Eval(((System.Web.UI.WebControls.RepeaterItem)Container.Parent.Parent).DataItem, "Property") %>
Odpovězeno 13/02/2010 v 02:01
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more