Entspricht Eval("Feld") in ASP.NET Repeater ItemDataBound-Ereignis?
Möchte ich das gleiche Eval("Feld") in einem ASP.NET repeater ItemDataBound-Ereignis, aber bin mir nicht sicher, was zu casten.e.Element.DataItem als. Typ der Datenquelle variieren kann, wie das ist, wiederverwendbaren code in ein benutzerdefiniertes Steuerelement. Also, wie kann ich den Zugriff auf ein Feld in e.Element.DataItem durch das Feld name (ein string)?
Idealerweise möchte ich so etwas machen:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
xxx item = (xxx)e.Item.DataItem;
string fieldValue = item("fieldname");
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht wissen, was der Typ zur compile-Zeit Ihre einzige option ist, zu behandeln ist als ein Objekt (der Standard-Rückgabetyp für die
DataItem
Eigenschaft).Sie könnten versuchen, mit:
Du bist immer noch stecken mit einem Gegenstand am Ende der Aufruf, sondern (sofern der Aufruf erfolgreich ist), wirst du wissen, dass
item
hat eine Eigenschaft namensfieldname
. Ich weiß nicht, ob das hilft. Vielleicht aktualisieren Sie Ihre Frage mit mehr Details über das, was Sie zu tun versuchen.statt
xxx item = (xxx)e.Item.DataItem;
schreiben:
werden oder werden könnten:
var item = e.Item.DataItem as TypeItem;
und dannitem.FieldName