Necesito saber cómo anidar repetidores dentro de un control de usuario. El lado html de las cosas está bien, es el enlace y el código detrás del que necesito ayuda. Solo he podido encontrar ejemplos usando una fuente de datos SQL, lo que realmente no ayuda.Cómo anidar repetidores en asp.net
Mis repetidores este aspecto:
<asp:Panel ID="pnlDiscipline" runat="server" CssClass="">
<asp:Repeater ID="rptDiscipline" runat="server">
<ItemTemplate>
<h4><%#Eval("Discipline")%></h4>
<ul>
<asp:Repeater ID="rptPrograms" runat="server">
<ItemTemplate>
<li><asp:HyperLink runat="server" Text='<%#Eval("Name") %>' NavigateUrl='<%#Eval("Link") %>'></asp:HyperLink> <%#Eval ("Notation") %></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater>
Lo que tengo que hacer es de esperar razonablemente claro - la disciplina h4 debe aparecer una vez, todas las entradas que pertenecen a la disciplina se enumeran a continuación, luego el siguiente h4, luego la lista apropiada, el siguiente h4 y así sucesivamente.
La fuente de datos es una vista de datos creada en el código subyacente donde cada fila tiene 'Nombre', 'Enlace', 'NOtation' y 'Disciplina'. He vinculado la vista de datos al repetidor externo y se comporta como se esperaba - enumera el nombre de la disciplina para cada entrada, pero no muestra los datos en el repetidor interno
¿Cómo hago para hacer este trabajo
EDIT:.? solo para aclarar, tengo una tabla de datos en el código subyacente cada fila. en esa tabla hay un elemento, cada elemento pertenece a una disciplina. Quiero usar el repetidor externo para enumerar las disciplinas, el interno para enumerar los elementos agrupados en cada disciplina. Como ese:
<h4>DISCIPLINE 1</h4>
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
</ul>
<h4>DISCIPLINE 2</h4>
<ul>
<li>Item</li>
<li>Item</li>
</ul>
<h4>DISCIPLINE 3</h4>
<ul>
<li>Item</li>
<li>Item</li>
</ul>
En la actualidad, la unión de la tabla de datos para el repetidor exterior da este (ejemplo utiliza los datos anteriores):
<h4>DISCIPLINE 1</h4>
<h4>DISCIPLINE 1</h4>
<h4>DISCIPLINE 1</h4>
<h4>DISCIPLINE 2</h4>
<h4>DISCIPLINE 2</h4>
<h4>DISCIPLINE 3</h4>
<h4>DISCIPLINE 3</h4>
he utilizado OnItemDataBound en el repetidor exterior como se sugiere, y como un caso de prueba soy capaz de acceder a los datos:
protected void rptDiscipline_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
DataRowView drView = (DataRowView) e.Item.DataItem;
string name = drView["Name"] as string;
string link = drView["Link"] as string;
string notation = drView["Notation"] as string;
Response.Write(name + link + notation + "<br />")
}
Así que los datos están ahí, es exactamente lo que esperaría ver, simplemente no puedo conseguirlo ligado al repetidor interno. Si hay una forma más eficiente de lograr lo mismo, me complace volver a trabajar mi solución.
puede obtener idea de este hilo http://stackoverflow.com/questions/1220715/creating-a-nested-repeater-control-dynamically/1220836#1220836 –
lo que estás tratando de enlazar con el interior ¿reloj de repetición? tal vez publique la clase que está vinculando al repetidor externo. – EdmundYeung99
@ Edmund: edité mi pregunta, espero que aclare mi problema – Nathan