ASP.NET - Repeater solo muestra el ultimo

 
Vista:

Repeater solo muestra el ultimo

Publicado por DanielGT (11 intervenciones) el 24/09/2004 07:27:37
Bueno, ya que nadie supo como contestar mi pregunta anterior, lo resolvi por mi mismo.

Pero ahora tengo otro problema, ojala alguien pueda ayudarme.

La pregunta es muy simple: Porque el control Repeater solo me muestra el ultimo elemento? y siempre el ultimo. El Repeater lo tengo enlazado a un arrayList, y aunque este lo tengo lleno de elementos diferentes, siempre me muestra solamente el ultimo elemento.

Tengo lo siguiente:

<asp:repeater id="lstProductos" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Descripcion")%>
</ItemTemplate>
</asp:repeater>

mientras que el codigo de la pagina es el siguiente

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim objProducto As New SisControl.Producto()
Dim arrProductos As System.Collections.ArrayList

Try
arrProductos = objProducto.Listado( )
lstProductos.DataSource = arrProductos
Page.DataBind()
Catch excepcion As System.Exception
Response.Write(excepcion.Message)
End Try
End Sub

arrProductos es un arrayList que lo he llenado con los siguientes datos
Caja CD 10 unids
Caja CD 50 unids
Caja CD 100 unids

Pero la salida es la siguiente:
Caja CD 100 unids
Caja CD 100 unids
Caja CD 100 unids

Por favor, ya no se que hacer para ver que es lo que pasa.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 56
Bronce
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

RE:Repeater solo muestra el ultimo

Publicado por Yamil Bracho (1136 intervenciones) el 24/09/2004 21:49:52
Al parecer esta bien el codigo... Revisa cuando llenas el ArrayList...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Repeater solo muestra el ultimo

Publicado por DanielGT (11 intervenciones) el 25/09/2004 03:39:17
Ya lo tengo...

Tenias razon, es el arrayList el que tiene los datos repetidos, pero hay algo que no entiendo

tengo el siguiente codigo

Do While drResul.Read
LProductos.Producto_id = drResul.GetInt16(0)
LProductos.id_proveedor = drResul.GetInt16(1)
LProductos.nombre_prov = drResul.GetString(2)
LProductos.rut_prov = drResul.GetString(3)
LProductos.id_categoria = drResul.GetInt16(4)
LProductos.desc_categoria = drResul.GetString(5)
LProductos.Cantidad = drResul.GetInt16(6)
LProductos.Precio = drResul.GetDouble(7)
LProductos.Descripcion = drResul.GetString(8)
LProductos.Disponibilidad = drResul.GetByte(9)
tmpResultado.Add(LProductos)
Loop

tmpResultado es un arrayList, dentro de mi clase, el cual uso como almacenamiento temporal antes de mostrarlo como resultado del metodo. Lo que no entiendo es porque en cada vez que se ejecuta tmpResultado.Add(Lproductos) todos los valores anteriores son sobreescritos por el nuevo valor. Resolvi el problema colocando Lproductos=New ListadoProductos() al inicio del bucle y Lproductos=nothing al final del bucle para crear y destruir el objeto y asi asegurarme que cualquier referencia al elemento que estoy ingresado no quede copiado, pero aun no entiendo bien porque es esto, acaso una vez que hago un Add, ambos comparten la misma direccion de memoria?

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 56
Bronce
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

RE:Repeater solo muestra el ultimo

Publicado por Yamil Bracho (1136 intervenciones) el 26/09/2004 01:26:35
La razon es porque estas agregando la misma refrencia todo el tiempo. Cambias el valor de las propiedades del objeto pero sigue siendo el mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar