У меня есть часть кода, в которую я вкладываю репитеры, жестко кодируя их в HTML:
<asp:Repeater ID="rpt_1" runat="server">
<ItemTemplate>
<div><%# Eval("ID") %></div>
<asp:Repeater ID="rpt_2" runat="server">
<ItemTemplate>
<div><%# Eval("ID") %></div>
<asp:Repeater ID="rpt_3" runat="server">
<ItemTemplate>
<div><%# Eval("ID") %></div>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
ItemTemplate каждого ретранслятора имеет точно такой же HTML и материал для разметки. Есть ли способ программно вложить их в число ретрансляторов в зависимости от их расположения? Вот вид псевдо-кода того, что я хочу сделать:
<asp:Repeater ID="rpt_1" runat="server">
<ItemTemplate>
<div><%# Eval("ID") %></div>
<asp:Repeater ID="rpt_2" runat="server"/>
</ItemTemplate>
</asp:Repeater>
rpt_1.ItemDataBound += new RepeaterItemEventHandler(rpt_ItemDataBound);
rpt_1.DataSource = q;
rpt_1.DataBind();
protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (sender is Repeater)
{
string strID = ((Repeater)sender).ID.ToString();
strID = strID.Substring(strID.Length - 1, 1).ToString();
Repeater rpt = (Repeater)e.Item.FindControl("rpt_" + strID);
if (strID != "4")
{//Stop the nested creation
//Does this work?
//How do I accomplish this?
rpt.ItemTemplate = (Repeater)e.Item.FindControl("rpt_" + (Convert.ToInt32(strID)-1).ToString()).ItemTemplate;
rpt_1.ItemDataBound += new RepeaterItemEventHandler(rpt_ItemDataBound);
rpt.DataSource = q;
rpt.DataBind();
}
}
}
Могу ли я присвоить ItemTemplate одного повторителя другому в коде?