匿名型のコレクションにASP.net GridViewをバインドしました。.netデータバインディング - 匿名型のプロパティの参照
RowDataBoundイベントハンドラで匿名型のプロパティのいずれかを参照するにはどうすればよいですか?
私はすでにこのような匿名型をキャストする方法を知っています:
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;
}
私はほとんどこれは、それが仕事をしていても、厄介であると言うだろうと思います。実際のコードでは3つ以上のプロパティがあり、匿名型のプロパティを追加または並べ替えるたびに、2つの場所でコードを更新する必要がありました。
e.Row.DataItemに特定のタイプの特定のプロパティがあることを伝え、そのオブジェクトに(クラスの作成以外に)その値を与えるように強制するのが良い方法はありますか?
あなたはどういう意味ですか?別の順序で?これは、匿名型が(構造体のような)レイアウトに影響を受けていることを意味しますか? – leppie
構造体が存在するかどうかにかかわらず、IDK。それらのプロパティーを追加、削除、名前変更、または並べ替えると、キャストは機能しません。 –
うわー、私はちょうど自分自身をチェック!どのように私はそれを逃したのだろうか? :) – leppie