Repeater DataBound事件中的匿名类型

10
我将ASP.NET重复器的数据源设置如下:
rptTargets.DataSource = from t in DB.SalesTargets select new { t.Target, t.SalesRep.RepName };

现在,在重复器的OnDataBound事件中,我如何从e.Item.DataItem中包含的匿名类型中检索RepName和Target属性?
非常感谢
2个回答

23
你可以使用 DataBinder.Eval:
string repName = (string)DataBinder.Eval(e.Item.DataItem, "RepName");
string target = (string)DataBinder.Eval(e.Item.DataItem, "Target");

13

我知道这个问题已经在一年前得到了答案,但我刚刚找到了一个解决这个问题的.NET 4.0解决方案。

当你将匿名类型绑定到一个repeater时,你可以像这样在OnDataBound事件中访问属性:

dynamic targetInfo = e.Item.DataItem as dynamic;

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

如果我需要对targetInfo中的成员进行条件判断,例如if(targetinfo.RepName ==""),该如何实现条件判断?因为它会抛出异常,表示没有这样的类型。 - LojiSmith
在这种情况下,您应该像这样做:string repName = targetInfo.RepName; if (repName == "") { ... } - Kristof Claes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接