2008-09-29 3 views
5

J'ai ce DataTable qui a un ensemble de colonnes différent à l'exception d'un numéro de séquence.ObjectDataSource Méthode de mise à jour avec paramètres dynamiques

| Séquence | Valeur | Taxe | Devoir | Total |

N'importe quel nombre de colonnes doit être accepté avec des noms de colonnes uniques.

Pour afficher cette table, j'ai besoin d'utiliser une ObjectDataSource mappée à une classe de présentateur avec une méthode Select.

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

Le ObjectDataSource est alors lié à un GridView avec AutoGenerateColumns la valeur true. La séquence est la clé de données.

Jusqu'ici, cela fonctionne pour sélectionner la table. Le problème vient quand j'ai besoin de mettre à jour la table. ObjectDataSource ne cesse de me harceler pour avoir une méthode de mise à jour avec exactement les mêmes paramètres que ceux des colonnes de la table.

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

Mais je ne peux pas créer une méthode de ce type car je ne connais pas l'ensemble des colonnes nécessaires.

J'ai essayé d'utiliser une méthode avec une liste de paramètres variables mais je ne veux pas l'utiliser.

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

Sur idée que j'ai maintenant est de créer un ensemble de méthodes de mise à jour comme celui-ci dans Présentateur:

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

Mais je ne pense que va se faire par l'examen de code, ni comme l'idée.

L'autre idée que j'ai est de créer une méthode dynamique et de l'attacher (si possible) à la classe Presenter ou ailleurs à l'exécution, mais je ne suis pas vraiment sûr que cela fonctionne. Donc, si vous avez une solution, merci de nous aider. Merci beaucoup!

Carlos

Répondre

3

Il me semble que vous allez avoir à la ferraille à l'aide du modèle déclaratif ObjectDataSource et passer au réglage de la source de données & liant la grille « old-school » manuellement dans postback (ou charger, selon le cas), puis gérer manuellement la modification/mise à jour.

Les objets DataSource sont très en particulier sur la façon dont vous les utilisez - et ne fonctionnent pas bien, voire pas du tout, si vous essayez de sortir des lignes.