Foros del Web » Programación para mayores de 30 ;) » .NET »

Repeaters anidados

Estas en el tema de Repeaters anidados en el foro de .NET en Foros del Web. Hola a todos, tengo el siguiente problemilla espero que ustedes conozcan alguna solución. Necesito visualizar por una pagina web los productos que tienen unos fabricantes. ...
  #1 (permalink)  
Antiguo 11/03/2009, 17:46
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 2 meses
Puntos: 14
Repeaters anidados

Hola a todos, tengo el siguiente problemilla espero que ustedes conozcan alguna solución.
Necesito visualizar por una pagina web los productos que tienen unos fabricantes. Mi idea en un principio era en un repeater visualizar los fabricantes y en cada fabricante otro repeater para los productos del mismo. Espero que con el siguiente ejemplo se entienda algo mejor.

<asp:Repeater id="fabricantes">
<HeaderTemplate>
Aqui irian los fabricantes
</HeaderTemplate>
<ItemTemplate>
<asp:Repeater id="productos">
<ItemTemplate>
Aqui irian los productos del fabricante definido en el primer repeater
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>

Se que falta mucho codigo pero bueno creo que asi se entiende mi idea (eso espero). Todos los datos los saco de una base de datos por medio de dataset. Segun tengo entendido en el <HeaderTemplate> de un repeater no se puede poner ningun resultado de consulta de base de datos. No se si mi idea es posible realizarla. No obstante muchas gracias por vuestra atencion.

Un saludo.
  #2 (permalink)  
Antiguo 02/04/2009, 08:41
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Repeaters anidados

Ya he encontrado la solucion. Es muy larga de escribir, pero si a alguien le interesa la escribire encantado.
  #3 (permalink)  
Antiguo 23/11/2009, 09:19
 
Fecha de Ingreso: noviembre-2005
Mensajes: 62
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Repeaters anidados

A mi me interesa.
  #4 (permalink)  
Antiguo 26/11/2009, 06:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 15 años, 2 meses
Puntos: 14
Respuesta: Repeaters anidados

Hola elchuri2002, me acabo de enterar ahora de tu mensaje perdon por la tardanza en contestar, por supuesto encantado te paso el codigo

Primero te paso el codigo .aspx donde se visualizan los resultados

Código:
<asp:Repeater id="parentRepeater" runat="server">
  <itemtemplate>
    <p><%#DataBinder.Eval(Container.DataItem,"nombre1")%></p>

    <!--Metemos un elemento repeater para cada elemento-->
    <asp:Repeater id="childRepeater" runat="server" datasource='<%#Container.DataItem.Row.GetChildRows("myrelation")%>'>
	      <HeaderTemplate>
	       <table>
	        <tr>
	         <th>
	          Codigo
	         </th>
	         <th>
	          Nombre
	         </th>
	         </tr>
	      </HeaderTemplate>
		  <itemtemplate>
		   <tr>
		    <th>
		     <%#Container.DataItem("codigo")%>
		    </th>
		    <th>
		     <%#Container.DataItem("nombre")%>
		    </th>
		   </tr>
		  </itemtemplate>
		</asp:Repeater>
	      </table>   
    <br/><br/>
  </itemtemplate>
</asp:Repeater>
Hasta aqui el codigo aspx. Lo unico asi que se pueda destacar es la relaccion "myrelation" para enlazar varias tablas, este repeater anidado en concreto toma valores de dos tablas diferentes.

Ahora el codigo perteneciente al archivo vb.
Código:
 
'hacemos un comamndo para coger los datos de la primera tabla recuerda que utilizamos dos tablas. Hay que tener en cuenta que el campo CAMPO EN TABLA2 Y CAMPO EN TABLA1 TIENEN EL MISMO VALOR POR ESO SE UTILIZAM COMO DATO PARA RELACIONAR

Dim cmd1 As SqlDataAdapter = New SqlDataAdapter("SELECT DISTINCT tabla1.nombre1, tabla1.campo from tabla1 INNER JOIN tabla2 ON tabla1.campo=tabla2.campo, cnn)

'creamos un dataset para coger los datos
 Dim ds As DataSet = New DataSet()
 cmd1.Fill(ds, "datos1")

'hacemos otro comando para coger los datos de la segunda tabla
Dim cmd2 As SqlDataAdapter = New SqlDataAdapter("SELECT * FROM tabla2 WHERE, cnn)

'cargamos los datos en el mismo dataset
cmd2.Fill(ds, "datos2")

'añadimos la relaccion entre las dos tablas
ds.Relations.Add("myrelation", ds.Tables("tabla1").Columns("campo"), ds.Tables("tabla2").Columns("campo"))
parentRepeater.DataSource = ds.Tables("tabla1")

Page.DataBind()
cnn.Close()
Bueno esto es todo. Espero que el codigo se entienda medianamente, he intentado ponerlo lo mas claro posible, no obstante si tienes alguna duda no dudes en consultarme. Mucha suerte y espero que te sirva de ayuda

Un saludo
Pinty
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:23.