Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/11/2009, 06:54
Pinty
 
Fecha de Ingreso: febrero-2009
Mensajes: 472
Antigüedad: 16 años, 1 mes
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