2008-09-29 15 views
5

Ich habe diese DataTable, die eine unterschiedliche Anzahl von Spalten mit Ausnahme einer Sequenznummer hat.ObjectDataSource Update-Methode mit dynamischen Parametern

| Sequenz | Wert | Steuer | Pflicht | Gesamt |

Eine beliebige Anzahl von Spalten sollte mit eindeutigen Spaltennamen akzeptiert werden.

Um diese Tabelle anzuzeigen, muss ich eine ObjectDataSource verwenden, die einer Presenter-Klasse mit einer Select-Methode zugeordnet ist.

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

Die Object wird dann mit Autogeneratecolumns zu einem Gridview gebunden auf true gesetzt. Sequenz ist der Datenschlüssel.

Bis jetzt funktioniert das für die Auswahl der Tabelle. Das Problem kommt, wenn ich die Tabelle aktualisieren muss. Die ObjectDataSource hält mich auffordern, eine Update-Methode mit genau den gleichen Parametern wie die Spalten in der Tabelle zu haben.

Aber ich kann eine Methode wie diese nicht erstellen, weil ich nicht die Menge der erforderlichen Spalten kenne.

Ich habe versucht, eine Methode mit Variablen-Parameter-Liste, aber es will nicht verwenden.

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

Auf Idee, die ich jetzt habe, ist eine Reihe von Aktualisierungsmethoden wie dies in Presenter zu erstellen:

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

Aber ich denke, dass weder würde durch Code-Review ist zu erhalten, noch wie die Idee. Die andere Idee, die ich habe, ist eine dynamische Methode zu erstellen und diese (wenn möglich) an die Presenter-Klasse oder wo auch immer zur Laufzeit anzuhängen, aber ich bin mir nicht sicher, ob das funktionieren würde.

Also, wenn Sie irgendeine Lösung haben, bitte helfen Sie. Vielen Dank!

Carlos

Antwort

3

Es klingt für mich wie Sie gehen zu den Objectvereinbarungsmodell Schrott haben, verwenden, und gehen Sie zu der „alten Schule“ Einstellung der Datenquelle & das Netz manuell in Postback-Bindung (oder laden, je nachdem) und bearbeiten/update manuell bearbeiten.

Die DataSource-Objekte sind sehr insbesondere darüber, wie Sie sie verwenden - und nicht gut funktionieren, wenn überhaupt, wenn Sie versuchen, außerhalb der Linien zu gehen.

Verwandte Themen