ASP.NET MVC 4 アプリケーションで Infragistics Ignite UI グリッドを使用しています。ビューでの表示は次のとおりです。
@model IQueryable<User>
@( Html.Infragistics().Grid( Model )
.AutoGenerateColumns( false )
.Columns( column => {
column.For( p => p.Id)
.HeaderText( "ID" );
column.For( p => p.Name )
.HeaderText( "Name" );
} )
.DataSourceUrl( Html.BuildUrlFromExpression<UserController>( c => c.GetUsers() ) )
.Features( feature => {
feature.Paging().Type( OpType.Remote );
feature.Sorting().Type( OpType.Remote ).CaseSensitive( false );
feature.Filtering().Type( OpType.Remote );
feature.Resizing();
feature.Tooltips();
} )
.Width( "100%" )
.DataBind()
.Render() )
User オブジェクトのプロパティの 1 つは、null になる可能性がある子エンティティです。スキーマの要点は次のとおりです。
public class User
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Role Role { get; set; }
}
public class Role
{
public virtual int Id { get; set; }
public virtual string Description { get; set; }
}
グリッドは問題なく機能していますが、ロールの子の Description プロパティを列に表示する必要があります。これは十分に簡単なはずですが、私はそれを理解することができませんでした。たとえば、Role が null の場合があるため、これは機能しません (グリッドのヘッダー行と永続的な読み込みアイコンが表示されます)。
.Columns( column => {
column.For( p => p.Id)
.HeaderText( "ID" );
column.For( p => p.Name )
.HeaderText( "Name" );
column.For( p => p.Role.Description )
.HeaderText( "Role" );
} )
これも機能しません:
column.For( p => p.Role.Description )
.HeaderText( "Role" )
.Template( "${Site.Name}" );