2009-07-31 5 views
9

J'installe le DataSource d'un répéteur ASP.NET comme suit:type anonyme dans l'événement Répéteur DataBound

rptTargets.DataSource = from t in DB.SalesTargets select new { t.Target, t.SalesRep.RepName }; 

Maintenant, dans le cas OnDataBound du répéteur, comment puis-je récupérer les RepName et les propriétés de la cible Type anonyme contenu dans e.Item.DataItem?

Merci beaucoup

Répondre

19

Vous pouvez utiliser DataBinder.Eval:

string repName = (string)DataBinder.Eval(e.Item.DataItem, "RepName"); 
string target = (string)DataBinder.Eval(e.Item.DataItem, "Target"); 
+0

Parfait, merci Richard. – staterium

13

Je sais que cette question a été répondu à plus d'un an, mais je viens de trouver une solution .NET 4.0 pour ce problème.

Lorsque vous liez votre type anonyme à un répéteur, vous pouvez accéder aux propriétés en cas OnDataBound comme ceci:

dynamic targetInfo = e.Item.DataItem as dynamic; 

string repName = targetInfo.RepName; 
string target = targetInfo.Target; 
+0

Que faire si je dois mettre une condition sur le membre de targetInfo comme si (targetinfo.RepName == "") alors? comment mettre une condition? parce qu'il me donne une exception qu'il n'a aucun type comme ceci – LojiSmith

+0

Dans ce cas, vous devriez probablement faire quelque chose comme 'string repName = targetInfo.RepName; if (repName == "") {...} ' –

Questions connexes