2008-10-24 12 views
21

estoy tratando de añadir parámetros a un ObjectDataSource en tiempo de ejecución así:¿Cómo puedo configurar ObjectDataSource seleccionar los parámetros en tiempo de ejecución

 Parameter objCustomerParameter = new Parameter("CustomerID", DbType.String, customerID); 
     Parameter objGPDatabaseParameter = new Parameter("Database", DbType.String, gpDatabase); 

     //set up object data source parameters 
     objCustomer.SelectParameters["CustomerID"] = objCustomerParameter; 
     objCustomer.SelectParameters["Database"] = objGPDatabaseParameter; 

¿En qué momento del ciclo de vida ObjectDataSource hay que añadir estos parámetros (qué evento)? Además, algunos valores provienen de una propiedad de página maestra (que carga después de page_load de la página que contiene objectDataSource).

Respuesta

34

Agréguelos al evento para la operación que está tratando de usar. Por ejemplo, si estos parámetros son parte del comando SELECCIONAR, añádalos al evento Selección, si es necesario que vayan con el comando ACTUALIZAR y luego agréguelos al evento Actualización.

ObjectDataSource plantea un evento antes de realizar cada operación, es cuando puede insertar parámetros (o validar/alterar parámetros existentes).

Además, no intente modificar la colección de parámetros del ODS. Desea agregar sus parámetros a ObjectDataSourceSelectingEventArgs que se pasa al controlador de eventos.

Algo así como:

e.InputParameters["CustomerID"] = customerId; 
e.InputParameters["database"] = dbName; 
+1

Gracias, pero parece que la colección de parámetros sólo se ha leído. ¿Hay alguna manera de establecer el valor en ese controlador de eventos? – TheEmirOfGroofunkistan

+0

Sí, ver mi edición. Desea modificar el miembro inputParemeters del evento arg. –

+0

impresionante, gracias por el ejemplo. No fue tan intuitivo como creo que podría ser. – TheEmirOfGroofunkistan

3

Agregue lo antes posible; en el evento PreInit. Esto es parte de la inicialización así que debería hacerse allí.

Consulte el ASP.NET Page Life Cycle Overview para obtener más información.

Cuestiones relacionadas