c# - 在 asp.net 中使用嵌套转发器

标签 c# javascript asp.net c#-4.0

我想用 asp.net 中继器做一个自定义菜单。我正在获取我的数据 SiteMap.RootNode.ChildNodes,它是子节点。

asp.net :

<asp:Repeater runat="server" ID="rep1" OnItemDataBound="rpt1_ItemDataBound">
    <HeaderTemplate>
        <ul>
    </HeaderTemplate>
    <ItemTemplate>
        <li class="links">
            <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>' Text='<%# Eval("Title") %>'></asp:HyperLink>
        </li>
        <%--<asp:Repeater ID="rep2" runat="server">                                     
        </asp:Repeater>--%>
    </ItemTemplate>
    <FooterTemplate>
        </ul>
    </FooterTemplate>
</asp:Repeater>

C#

protected void Page_Load(object sender, EventArgs e)
{
      rep1.DataSource = SiteMap.RootNode.ChildNodes;
      rep1.DataBind();
}

protected void rpt1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}

如何做到这一点?请帮助我。

编辑:enter image description here

最佳答案

如果您只有两个层级,那么您已经完成了一半:使用 ItemDataBound为内部转发器设置数据源的事件:((Repeater)FindControl('rep2')).DataSource = <proper data>;

如果您有多个/未知的层次结构级别,唯一的方法是通过隐藏代码创建它们。您可以使用 Panel 作为容器,动态创建中继器并将父中继器添加到面板,例如:Panel1.Controls.Add(rep1);

关于c# - 在 asp.net 中使用嵌套转发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14124149/

相关文章:

c# - SQL查询执行难度

c# - 使用regex c#获取字符之间的字符串

javascript - 如何优雅地禁用/启用所有 jQuery UI 按钮?

javascript - 使用 Javascript 使按钮不可见或可见

c# - 用 XElement 替换 XElement 内容

C# System.NullReferenceException NSoup 代码

asp.net - 使用 ASP.NET 将二进制写入新选项卡/窗口

c# - 启用 CORS 的 Web API 无法添加 header

javascript - 尝试通过 Accordion 详细信息中的项目更改 Accordion 行中标签的文本

php - Jscrollpane 在底部初始化