Repeater, error de vinculo
Publicado por DanielGT (11 intervenciones) el 22/09/2004 06:58:23
Hola chicos.
Tengo un problema, es algo complejo, pero ojala puedan ayudarme.
Tengo una pagina con el siguiente codigo
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(-1, -1, -1, 127, "")
Repeater_1.DataSource = arrProductos
Page.DataBind()
Catch excepcion As System.Exception
Response.Write(excepcion.Message)
End Try
End Sub
la llamada a objProducto.Listado(-1, -1, -1, 127, "") , consulta a una base de datos, y me devuelve en un arrayList, que en este caso particular tengo solo 1 registro en mi base de datos, de modo que el arrayList tiene 1 elemento. Ahora bien, objProducto.Listado devuelve un arrayList con objetos ListadoProductos, la cual es una clase del siguiente tipo:
Public Class ListadoProductos
Inherits SisControl.Producto
Public id_proveedor As Short
Public nombre_prov As String
Public rut_prov As String
Public id_categoria As Short
Public desc_categoria As String
End Class
Y a su vez, Producto es una clase definida asi:
Public Class Producto
Public Producto_id As Long = 1
Friend Cantidad As Integer
Friend Precio As Single
Friend Descripcion As String
Friend Disponibilidad As Short
....Otros_metodos... bla bla bla.........
End Class
El Repeater lo tengo diseñado asi:
<asp:Repeater id="lstProductos" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem("Descripcion")%>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
Pero el error viene al ejecutar la linea Page.DataBind. La clase, la llamada a mis metodos, internamente la llamada a la base de datos funciona todo perfecto, incluso antes de llamar a Page.Databind el arrayList tiene el o los elementos que esperaba obtener. La pagina me manda el siguiente error:
No se encontró ningún miembro predeterminado para el tipo 'ListadoProductos'.
He cambiado el enlace a lo siguiente, pensando que era por como defini mi clase ListadoProductos
<%# DataBinder.Eval(Container.DataItem, "desc_categoria") %>
Pero me arroja el siguiente error
DataBinder.Eval: 'SisControl.ListadoProductos' no contiene una propiedad con el nombre desc_categoria
Alguien tiene alguna idea?. Hasta donde he averiguado, segun unos tutoriales de Microsoft, dice que si tengo un arrayList de tipo "Casa" (por ejemplo), entonces Container.DataItem sera de tipo Casa, es por eso que no entiendo bien que es lo que sucede con mi pagina. No se si las propiedades declaradas como Friend tenga algo que ver, las cambie a Public pero me sigue dando el mismo error.
Si alguien entiende lo que quiero decir, jejejeje... (ya se que esta enredado ^^U ) y si pueden ayudarme, les estare muy agradecido. Desde ya les aclaro que mi Clase Producto y el metodo funcionan perfectamente, el problema lo tengo al vincular al Repeater.
Un saludo y desde ya muchas gracias.
Tengo un problema, es algo complejo, pero ojala puedan ayudarme.
Tengo una pagina con el siguiente codigo
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(-1, -1, -1, 127, "")
Repeater_1.DataSource = arrProductos
Page.DataBind()
Catch excepcion As System.Exception
Response.Write(excepcion.Message)
End Try
End Sub
la llamada a objProducto.Listado(-1, -1, -1, 127, "") , consulta a una base de datos, y me devuelve en un arrayList, que en este caso particular tengo solo 1 registro en mi base de datos, de modo que el arrayList tiene 1 elemento. Ahora bien, objProducto.Listado devuelve un arrayList con objetos ListadoProductos, la cual es una clase del siguiente tipo:
Public Class ListadoProductos
Inherits SisControl.Producto
Public id_proveedor As Short
Public nombre_prov As String
Public rut_prov As String
Public id_categoria As Short
Public desc_categoria As String
End Class
Y a su vez, Producto es una clase definida asi:
Public Class Producto
Public Producto_id As Long = 1
Friend Cantidad As Integer
Friend Precio As Single
Friend Descripcion As String
Friend Disponibilidad As Short
....Otros_metodos... bla bla bla.........
End Class
El Repeater lo tengo diseñado asi:
<asp:Repeater id="lstProductos" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<%# Container.DataItem("Descripcion")%>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
Pero el error viene al ejecutar la linea Page.DataBind. La clase, la llamada a mis metodos, internamente la llamada a la base de datos funciona todo perfecto, incluso antes de llamar a Page.Databind el arrayList tiene el o los elementos que esperaba obtener. La pagina me manda el siguiente error:
No se encontró ningún miembro predeterminado para el tipo 'ListadoProductos'.
He cambiado el enlace a lo siguiente, pensando que era por como defini mi clase ListadoProductos
<%# DataBinder.Eval(Container.DataItem, "desc_categoria") %>
Pero me arroja el siguiente error
DataBinder.Eval: 'SisControl.ListadoProductos' no contiene una propiedad con el nombre desc_categoria
Alguien tiene alguna idea?. Hasta donde he averiguado, segun unos tutoriales de Microsoft, dice que si tengo un arrayList de tipo "Casa" (por ejemplo), entonces Container.DataItem sera de tipo Casa, es por eso que no entiendo bien que es lo que sucede con mi pagina. No se si las propiedades declaradas como Friend tenga algo que ver, las cambie a Public pero me sigue dando el mismo error.
Si alguien entiende lo que quiero decir, jejejeje... (ya se que esta enredado ^^U ) y si pueden ayudarme, les estare muy agradecido. Desde ya les aclaro que mi Clase Producto y el metodo funcionan perfectamente, el problema lo tengo al vincular al Repeater.
Un saludo y desde ya muchas gracias.
Valora esta pregunta


0