GridView のビルトイン Entity Framework での並べ替えを使用すると、外部キーの値を表示できます。例えば...
<asp:boundfield HeaderText="Category" DataField="Category.Name" SortExpression="Category.Name" />
...しかし、ヘッダーをクリックしてグリッド内のアイテムを並べ替えると、リスト リストを Category.Name で並べ替えるにはどうすればよいですか?
私は文字列「Category.Name」しか持っていないので、これを行うことはできません:
.OrderBy( e => e.Category.Name )
だから私はリフレクションを試しました...
private static object GetPropertyValue( object obj, string propertyName )
{
PropertyInfo propertyInfo = obj.GetType().GetProperty( propertyName );
return propertyInfo.GetValue( obj, null );
}
// list is List<Widget>
// with a breakpoint here, ((Widget)list[i]).Companies.Name exists in all Widgets
list.OrderBy( e => GetPropertyValue( e, "Category.Name" ) )
...これは機能しません。例外はスローされませんが、Category.Name で並べ替えられません。
何か案は?