2009-07-31 12 views
9

estoy estableciendo el origen de datos de un repetidor de ASP.NET de la siguiente manera:Anónimo tipo de evento repetidor DataBound

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

Ahora, en caso OnDataBound del repetidor, ¿cómo puedo recuperar las propiedades RepName y objetivo de la tipo anónimo contenido en e.Item.DataItem?

Muchas Gracias

Respuesta

19

Puede utilizar DataBinder.Eval:

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

perfecto, gracias a Richard. – staterium

13

Sé que esta pregunta ha sido contestada hace más de un año, pero me acaba de encontrar una solución .NET 4.0 para este problema.

Al enlazar su tipo anónimo a un repetidor, se puede acceder a las propiedades en caso OnDataBound así:

dynamic targetInfo = e.Item.DataItem as dynamic; 

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

¿Qué pasa si tengo que ponerle una condición al miembro de targetInfo como if (targetinfo.RepName == "")? cómo poner una condición? porque me da una excepción que no tiene ningún tipo como este – LojiSmith

+0

En ese caso, probablemente debería hacer algo como 'string repName = targetInfo.RepName; if (repName == "") {...} ' –