Ich habe eine ASP.net GridView an eine Sammlung anonymer Typen gebunden..net Datenbindung - Verweise auf anonyme Eigenschaften
Wie kann ich auf eine der Eigenschaften der anonymen Typen im RowDataBound-Ereignishandler verweisen?
Ich bin schon von der Art und Weise bewusst die anonyme Art so zu werfen:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var AnonObj = Cast(e.Row.DataItem,
new { StringProperty = "", BoolProperty = false, IntProperty = 0 });
if (AnonObj.BoolProperty)
{
e.Row.Style.Add(HtmlTextWriterStyle.Color, "Red");
}
}
}
T Cast<T>(object obj, T type)
{
return (T)obj;
}
Ich denke, die meisten würden sagen, das ist etwas chaotisch, auch wenn es funktioniert. In meinem echten Code habe ich mehr als 3 Eigenschaften und müsste den Code an zwei Stellen aktualisieren, wenn ich die Eigenschaften meines anonymen Typs hinzugefügt oder neu geordnet habe.
Gibt es eine bessere Möglichkeit, e.Row.DataItem mitzuteilen, dass es eine bestimmte Eigenschaft eines bestimmten Typs hat und das Objekt zwingt, diesen Wert anzugeben (neben dem Erstellen einer Klasse)?
Wie meinst du 'benennen sie in einer anderen Reihenfolge?Bedeutet das, dass ein anonymer Typ layout-sensitiv ist (wie eine Struktur)? – leppie
IDK wenn eine Struktur ist oder nicht, aber ja. Wenn ich eine dieser Eigenschaften hinzufüge, entferne, umbenenne oder neu anordne, funktioniert der Cast NICHT. –
Wow, ich habe gerade nach mir selbst gesucht! Ich frage mich, wie ich das verpasst habe? :) – leppie