JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo cambiar los parámetros de un ObjectDataSource en ASP.NET 2.0

El nuevo control ObjectDataSource es muy útil a la hora de enlazar una rejilla u otro control de ASP.NET 2.0 con un objeto de negocio, como por ejemplo un Servicio Web o un objeto propio.

Los métodos de selección, inserción, actualización o borrado de registros pueden tener parámetros que es necesario ajustar. Por ejemplo en la siguiente figura el método de selección dispone de un paráemtro "Pais" que es necesario ajustar para poder obtener los datos:

El propio diálogo de configuración nos ofrece la posibilidad de asociarle a cada uno de los parámetros, aparte de un control por defecto, algún origen que sirva para asignarlo (una cookie,uncontrol, etc...):

Aunque esto llega en la mayor parte de los casos y es muy cómodo, puede darse el caso de que necesitemos cambiar nosotros dinámicamente el valor de un parámetro usando cualquier código de cosecha propia.

Lo primero que cabe pensar es acudir a la propiedad SelectParameters del control ObjectDataSource, y escribir algo así:

ObjectDataSource1.SelectParameters(

"Pais").Value = "Spain"

Por desgracia esto no funciona. Los parámetros del control no se pueden establecer desde esta colección, por lo que este código generará un error.

La forma de conseguirlo es mucho más rebuscada: Hay que gestionar los eventos de selección, actualziación, borrado o inserción y hacer el cambio en ellos a través de los parámetros que envían.

Por ejemplo, para cambiar el parámetro de selección de nuestro ejemplo debemos usar el siguiente código (sin que sirva de precedente en VB.NET):

Protected Sub ObjectDataSource1_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceSelectingEventArgs) Handles ObjectDataSource1.Selecting

e.InputParameters(

"Pais") = "Spain"

End Sub

La verdad es que me pafece un tanto rebuscado y, aunque es muy fácil escribir este código, considero que más fácil sería permitirlo desde las correspondientes propiedades, forzando si quieres el re-enlace del control. Pero bueno...

José Manuel Alarcón
Banner

Comentarios (1) -

hola  José Manuel Alarcón un gusto saludarte estoy haciendo un report viewer en asp.net y me tira el siguiente mensaje
     Error al procesar el informe.
        No se puede crear una conexión al origen de datos 'DataSetAbastible'.
            ObjectDataSource 'ObjectDataSource1' no pudo encontrar un método 'GetData' no genérico que no tenga ningún parámetro.
sabes a que se puede deber este problema??
gracias y saludo!!

Responder

Agregar comentario