2011-06-06 3 views
3

J'essaie de trouver un moyen de parcourir les propriétés d'un objet EF et de mettre à jour les valeurs de ces propriétés. Plus précisément, j'ai 50 champs qui sont peuplés par jusqu'à 50 listes déroulantes. Les 50 personnes peuvent ou non avoir besoin d'être remplies.Entity Framework - Boucler les propriétés pour la mise à jour

Pour résoudre ce problème, j'ai un répéteur qui va créer jusqu'à 50 DDL. L'utilisateur sélectionne les valeurs de chacun et appuie sur un bouton de mise à jour. Je suis en boucle à travers les éléments dans le répéteur et peut garder le compte de quelle itération je suis dans le répéteur. Je veux également utiliser ce compte pour savoir quel champ j'ai besoin de mettre à jour. Par exemple DDL1 = FIELD1, DDL2 = FIELD2, ....).

Voici un exemple de ce que je suis en train de faire:

using (Data.Entities dataContext = new Data.Entities) 
{ 
    var efObject = dataContext.EFData.Where(c => c.ID = [SOMEID]).First(); 

    int posCount = 0; 
    foreach (RepeaterItem rep1 in repeaterControl.Items) 
    { 
     DropDownList ddlControl= (DropDownList)rep1.FindControl("ddlControl"); 

     //Here is where I need to update a field 
     //Something like: efObject.Field# = ddlControl.SelectedValue; 
    } 
} 

Est-il possible de créer dynamiquement le nom de la propriété que je dois mettre à jour?

Y a-t-il une collection de propriétés auxquelles j'accède par index?

Est-ce encore plus proche de ce que je devrais faire à ce sujet?

Toute aide sera grandement appréciée. Je vous remercie.

Répondre

10

Vous pourriez faire quelque chose comme ceci.

var properties = typeof(EFType).GetProperties(BindingFlags.Public | BindingFlags.Instance); 
foreach (var property in properties) 
{ 
    var control = (DropDownList)rep1.FindControl("ddlControl" + property.Name); 
    property.SetValue(efObject, control.SelectedValue, null); 
} 

SelectedValue est une chaîne. Donc, vous devez prendre soin de la conversion de type si nécessaire.

+0

Parfait. C'est exactement ce dont j'avais besoin. Juste 1 note, a dû ajouter une valeur nulle pour le 3ème paramètre à la méthode SetValue. – EthanTowne

+0

@Horrorshow - à droite, null est nécessaire en effet. –

Questions connexes