2008-09-29 16 views
5

Ho questo DataTable che ha un set di colonne diverso tranne un numero di sequenza.ObjectDataSource Metodo di aggiornamento con parametri dinamici

| Sequenza | Valore | Tasse | Dovere | Totale |

Qualsiasi numero di colonne deve essere accettato con nomi di colonne univoci.

Per visualizzare tale tabella, è necessario utilizzare un oggetto ObjectDataSource mappato a una classe relatore con un metodo Select.

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

L'ObjectDataSource è quindi legato a una GridView con AutoGenerateColumns impostate su true. La sequenza è la chiave dei dati.

Finora, questo funziona per la selezione del tavolo. Il problema arriva quando ho bisogno di aggiornare la tabella. ObjectDataSource continua a tormentarmi per avere un metodo di aggiornamento con gli stessi identici parametri con quello delle colonne nella tabella.

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

Ma non riesco a creare un metodo del genere perché non conosco l'insieme di colonne necessarie.

Ho provato a utilizzare un metodo con elenco di parametri variabili ma non lo desidera.

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

Su idea che ho ora è quello di creare un insieme di metodi di aggiornamento di questo tipo in Presenter:

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... 

Ma io non credo che sia intenzione di ottenere attraverso la revisione del codice, né come l'idea.

L'altra idea che ho è quella di creare un metodo dinamico e collegarlo (se possibile) alla classe Presenter o ovunque al runtime, ma non sono sicuro se ciò funzionerebbe.

Quindi, se voi ragazzi avete qualche soluzione, per favore aiutatemi. Grazie mille!

Carlos

risposta

3

Sembra a me come si sta andando ad avere per rottamare utilizzando il modello dichiarativo ObjectDataSource, e passare alla impostazione "vecchia scuola" del datasource & vincolante manualmente la griglia a postback (o caricare, a seconda dei casi), quindi gestire manualmente anche la modifica/l'aggiornamento.

Gli oggetti DataSource sono molto in particolare su come li si utilizza - e non funzionano bene, se non del tutto, se si tenta di andare fuori dalle righe.

Problemi correlati