2013-02-22 53 views
1

我想的匿名枚举类型绑定到这样一个转发器:绑定匿名类型对中继

protected void Page_Load(object sender, EventArgs e) 
{ 
    var obj = myEnumerable.Select(x => new { foo = x.bar, ... }); 

    myRepeater.DataSource = obj; 
    myRepeater.DataBind(); 
} 

如何访问的e.Item.DataItemfoo财产OnItemDataBound

protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     myFunction(e.Item.DataItem.foo); 
    } 
} 

我不知道该投什么e.Item.DataItem,我错过了什么吗?这可能没有创建一个强类型的类?

我不能直接绑定myEnumerablemyRepeater,因为我必须先操纵它。

回答

3

您可以将匿名类型的序列绑定到中继器,但是如果您需要从另一个方法访问该类型,则应该定义一个适当的类。

匿名类型在狭义范围内很有用,当你不需要时需要这个类型信息要坚持*。在你的情况下,你需要它,所以定义一个类。


*从技术上讲,这种类型当然会坚持下去。编译器在后台生成一个类,并给它一个名字,就你所关心的而言,它是不可说的。但是这是在幕后,幕后和幕后发生的。内部。