none
ObjectDataSource Object Parameter RRS feed

  • Pregunta

  • Saludos...

    quisiera que me colaboraran con el siguiente asunto, trabajo en asp.net Framework 3.5 - VS 2010:

    Quiero enlazar un DropDownList a un ObjectDataSource, pero resulta que la clase que tiene como origen de datos el ObjectDataSource es posee un constructor con dos parametros uno tipo String y otro tipo Enum, es decir:

    1. La clase enlazada al ObjectDataSource posee un parametro el cual es otra clase y esta a su vez tiene un constructor de tipo String y otro tipo Enum.

    2.  He leido que para que un parametro tipo Objecto sea parametro del ObjectDataSource este debe poseer un constructor sin parametros, como podria solucionar esto. ?

    3. Puedo hacerlo con las propiedades de mi ObjectDataSource en el .aspx (xhtml)  o por el Code Behind ?


    No tengo idea como hacerlo, por eso acudí a uds y espero que me puedan ayudar con una buena respuesta.

    muchas gracias de antemano.


    • Editado UserQD86 jueves, 24 de noviembre de 2011 23:44 Detalle de la pregunta
    jueves, 24 de noviembre de 2011 23:38

Respuestas

  • saludos...
    ya he resuelto el asunto, lo hice de la siguiente manera:
    1. en el objectdatasource configurarlo de manera normal, seleccionar la clase, el metodo que ejecutara. Si este método tiene un parametro tipo Object dejarlo de esa manera.. aquí les dejo el código XHTML de como quedaría...
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OnSelecting="ObjectDataSource1_Selecting"
                                                                SelectMethod="MetodoEjecutar" TypeName="MiClase1">
                                                                <SelectParameters>
                                                                    <asp:Parameter Name="MiClase2" Type="Object" />
                                                                </SelectParameters>
                                                            </asp:ObjectDataSource>
    
    Nota: MiClase1 es la cual contiene el método que se ejecutará (MetodoEjecutar) y MiClase2 es la clase que se envia como parámetro en el Metodo que ejecutará el ObjectDataSource (MetodoEjecutar)
     
    2. Como se nota en el metodo anterior este ObjectDataSource tiene un evento al seleccionar (OnSelecting) que se llama ObjectDataSource1_Selecting, dentro de este se Declara el objecto que se enviará como parámetro al ObjectDataSource, puede ser que se declare local o global, luego el ObjectDataSource en este evento posee una propiedad llamada InputParameters el cual recibe como parámetro el NOMBRE de la clase que se envia como  parametro y luego se le asigna el objecto creado de dicha clase.

    Protected Sub ObjectDataSource1_Selecting(sender As Object, e As System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs)
    	'Opcional si no tienen el objeto creado<br/>	Dim oMiClase2 as New MiClase2<br/>	oMiClase2.Propiedad1 = "Hola Mundo"<br/>	oMiClase2.Propiedad2 = 123<br/>        e.InputParameters("MiClase2") = oMiClase2
        End Sub
    
    Con esto nos facilita mucho la vida utilizar el ObjectDataSource
    • Marcado como respuesta UserQD86 viernes, 25 de noviembre de 2011 16:20
    viernes, 25 de noviembre de 2011 16:20

Todas las respuestas

  • ¿Estamos hablando del método Select?  Yo lo haría así:  Agrego un método estático que recibe el string y el enum como parámetros.  Este método estático instanciaría el objeto con el otro objeto con los argumentos (que ya son configurables en ObjectDataSource) y devolvería eventualmente la colección requerida.
    Jose R. MCP
    viernes, 25 de noviembre de 2011 3:33
  • saludos...
    ya he resuelto el asunto, lo hice de la siguiente manera:
    1. en el objectdatasource configurarlo de manera normal, seleccionar la clase, el metodo que ejecutara. Si este método tiene un parametro tipo Object dejarlo de esa manera.. aquí les dejo el código XHTML de como quedaría...
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" OnSelecting="ObjectDataSource1_Selecting"
                                                                SelectMethod="MetodoEjecutar" TypeName="MiClase1">
                                                                <SelectParameters>
                                                                    <asp:Parameter Name="MiClase2" Type="Object" />
                                                                </SelectParameters>
                                                            </asp:ObjectDataSource>
    
    Nota: MiClase1 es la cual contiene el método que se ejecutará (MetodoEjecutar) y MiClase2 es la clase que se envia como parámetro en el Metodo que ejecutará el ObjectDataSource (MetodoEjecutar)
     
    2. Como se nota en el metodo anterior este ObjectDataSource tiene un evento al seleccionar (OnSelecting) que se llama ObjectDataSource1_Selecting, dentro de este se Declara el objecto que se enviará como parámetro al ObjectDataSource, puede ser que se declare local o global, luego el ObjectDataSource en este evento posee una propiedad llamada InputParameters el cual recibe como parámetro el NOMBRE de la clase que se envia como  parametro y luego se le asigna el objecto creado de dicha clase.

    Protected Sub ObjectDataSource1_Selecting(sender As Object, e As System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs)
    	'Opcional si no tienen el objeto creado<br/>	Dim oMiClase2 as New MiClase2<br/>	oMiClase2.Propiedad1 = "Hola Mundo"<br/>	oMiClase2.Propiedad2 = 123<br/>        e.InputParameters("MiClase2") = oMiClase2
        End Sub
    
    Con esto nos facilita mucho la vida utilizar el ObjectDataSource
    • Marcado como respuesta UserQD86 viernes, 25 de noviembre de 2011 16:20
    viernes, 25 de noviembre de 2011 16:20
  • ¿Estamos hablando del método Select?  Yo lo haría así:  Agrego un método estático que recibe el string y el enum como parámetros.  Este método estático instanciaría el objeto con el otro objeto con los argumentos (que ya son configurables en ObjectDataSource) y devolvería eventualmente la colección requerida.
    Jose R. MCP

    Gracias por tu colaboracion.
    viernes, 25 de noviembre de 2011 16:21