嵌套转发器和数据源

时间:2015-06-15 13:08:39

标签: asp.net webforms

我有一个中继器嵌套在另一个中继器中 我的问题是:是否可以使用数据源生成其他ItemTemplate组件。 如果是,我该怎么办? 例如:

ItemTemplate1 of parentRepeater
    A
    B
    C
ItemTemplate2 of parentRepeater
    D
    E
    F

这意味着为parentRepeater的每个ItemTemplate更改了childRepeater的ItemTemplate。

2 个答案:

答案 0 :(得分:0)

            <asp:Repeater runat="server" ID="repeater1"
                     onitemdatabound="Repeater1_ItemDataBound" >

                <ItemTemplate> 
                         <!--Outer repeater -->
                            <asp:repeater id="repeater2" runat="server">
                                <itemtemplate>

                                     <!--Inner repeater repeater -->

                                      </itemtemplate>
                            </asp:repeater>

                 </ItemTemplate>
            </asp:Repeater>

`

这是后端代码

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        //it return current row (think in terms of nested loops)
        DataRowView drv = (DataRowView)e.Item.DataItem; 

        // get value of that row
        int postID = Convert.ToInt32(drv["PostID"]); 


        //do what ever you want to do
        Repeater2.DataSource =  //some data like you did in outer repeater
        Repeater2.DataBind();
    }
}

答案 1 :(得分:0)

如果您的目标是让它们在两个模板之间来回切换,请使用AlternateItemTemplate

<asp:Repeater runat="server">
    <ItemTemplate>
        This came from ItemTemplate.
    </ItemTemplate>
    <AlternateItemTemplate>
        This came from AlternateItemTemplate.
    </AlternateItemTemplate>
</asp:Repeater>

当您想要改变表格中每行的背景颜色时,通常会使用此选项。