2009-07-31 14 views
9

ich die Datasource einer ASP.NET-Repeater bin Einstellung wie folgt:Anonym Art in Repeater Databound Ereignis

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

Jetzt, in der OnDataBound Ereignis des Repeaters, wie kann ich die RepName und Zieleigenschaften aus der abrufen anonymer Typ, der in e.Item.DataItem enthalten ist?

Vielen Dank

Antwort

19

Sie DataBinder.Eval verwenden können:

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

Perfect, dank Richard. – staterium

13

Ich weiß, diese Frage vor über einem Jahr beantwortet wurde, aber ich habe gerade eine .NET 4.0-Lösung für dieses Problem.

Wenn Sie Ihre anonymen Typ an einen Repeater binden, können Sie die Eigenschaften in der OnDataBound Ereignis zugreifen wie folgt aus:

dynamic targetInfo = e.Item.DataItem as dynamic; 

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

Was ist, wenn ich eine Bedingung an das Mitglied von targetInfo wie If (targetinfo.RepName == "") dann setzen? Wie man eine Bedingung setzt? weil es mir eine Ausnahme gibt, dass es keinen Typ wie diesen hat – LojiSmith

+0

In diesem Fall sollten Sie wahrscheinlich etwas tun wie 'string repName = targetInfo.RepName; if (repName == "") {...} ' –

Verwandte Themen