2008-09-29 24 views
5

Tengo este DataTable que tiene un conjunto variable de columnas a excepción de un número de secuencia.ObjectDataSource Método de actualización con parámetros dinámicos

| Secuencia | Valor | Impuestos | Deber | Total |

Se debe aceptar cualquier cantidad de columnas con nombres de columna únicos.

Para mostrar esa tabla, necesito usar un ObjectDataSource asignado a una clase de presentador con un método Select.

class Presenter { 
    [DataObjectMethod(DataObjectMethodType.Select)] 
    public DataView GetDutyAndTax() { ... } 
} 

El ObjectDataSource luego se une a un GridView con AutoGenerateColumns establece en True. La secuencia es la clave de datos.

Hasta ahora, eso funciona para seleccionar la tabla. El problema viene cuando necesito actualizar la tabla. ObjectDataSource no deja de insistir en que tenga un método de actualización con exactamente los mismos parámetros que el de las columnas de la tabla.

public void EditDutyAndTax(string Value, string Tax, string Duty, string original_Sequence) { ... } 

Pero no puedo crear un método así porque no sé el conjunto de columnas necesarias.

Intenté usar un método con lista de parámetros variables pero no desea usarlo.

public void EditDutyAndTax(params object[] values) { ... } 

sobre la idea que tengo ahora es crear un conjunto de métodos de actualización de este tipo en Presentador:

public void EditDutyAndTax(string value1, string original_Sequence) { ... } 
public void EditDutyAndTax(string value1, string value2, string original_Sequence) { ... } 
public void EditDutyAndTax(string value1, string value2, string value3, string original_Sequence) { ... } 
//an so on... 

Pero ni pensar que va a conseguir a través de la revisión de código, ni me gusta la idea.

La otra idea que tengo es crear un método dinámico y adjuntarlo (si es posible) a la clase Presenter o donde sea en tiempo de ejecución, pero no estoy seguro si eso funcionará.

Así que si ustedes tienen alguna solución, por favor ayuda. ¡Muchas gracias!

Carlos

Respuesta

3

Me suena como que se va a tener que desechar utilizando el modelo declarativo ObjectDataSource, e ir a la configuración de "la vieja escuela" de la fuente de datos & vinculante la red manualmente en la devolución de datos (o cargue, según sea el caso), y luego manipule la edición/actualización manualmente también.

Los objetos de DataSource son muy en particular sobre cómo los usa, y no funcionan bien, si es que intentan salir de las líneas.

Cuestiones relacionadas