2009-07-31 15 views
9

sto impostando il DataSource di un ripetitore ASP.NET come segue:tipo anonimo nel caso del ripetitore DataBound

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

Ora, nel caso in OnDataBound del ripetitore, come posso recuperare le proprietà RepName e destinazione dal tipo anonimo contenuto in e.Item.DataItem?

Molte grazie

risposta

19

È possibile utilizzare DataBinder.Eval:

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

Perfetto, grazie Richard. – staterium

13

So che questa domanda è stato risposto più di un anno fa, ma ho appena trovato una soluzione .NET 4.0 per questo problema.

Quando si associa il tipo anonimo a un ripetitore, è possibile accedere alle proprietà in caso OnDataBound in questo modo:

dynamic targetInfo = e.Item.DataItem as dynamic; 

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

Cosa succede se devo mettere una condizione sul membro da targetInfo come se (targetinfo.RepName == "") allora? come mettere una condizione? perché mi dà un'eccezione che non ha alcun tipo come questo – LojiSmith

+0

In tal caso dovresti probabilmente fare qualcosa come 'string repName = targetInfo.RepName; if (repName == "") {...} ' –