asp.net - 从父转发器外部访问 SiteMapNode Container.DataItem

标签 asp.net css repeater sitemap

我正在尝试从用于呈现它的 ASP.NET 转发器外部的站点地图转发器访问当前的“事件”顶级节点,这是为了 CSS 样式目的,因为我想将子节点放在后续水平排列具有不同样式的行。目前我有以下代码,无法使用 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>

我想在下一个浅蓝色元素上显示子节点,如果这不是使用子中继器呈现的话,我可以从单独的 div 中完美地完成。在下图中,博客和服务是顶级节点,它们的后续节点(每个 2 个)应显示在下面的浅蓝色行中。这可能吗?

image

最佳答案

获取父转发器 DataItem,就像您不在子转发器中一样:

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

关于asp.net - 从父转发器外部访问 SiteMapNode Container.DataItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2256053/

相关文章:

javascript - 谷歌地图删除控件

c# - 有没有办法异步过滤 IList?

c# - 引用 AssemblyInfo.cs 中的项目时发布预编译的 ASP.NET 失败

c# - 带有 Entity Framework 的 ASP.NET : EF does not generate identity automatically

asp.net - 使用 GetDirectories 时的性能变化

c# - 无法清除 ASP :Repeater 的项目

c# - 更改 Repeater Button onClick 的背景颜色

jquery - 如何使用 <asp :button>? 强制关闭 jQuery UI Accordion <DIV>

css - 在 CSS 的父 div 中居中多个可变长度的 div

css - 在 LESS 的同一个选择器中使用 mixin?