我在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对象的一个属性是可以为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; }
}
网格运行良好,但我需要在列中显示Role子项的Description属性。这似乎应该很容易,但我无法弄明白。例如,这不起作用,因为Role有时为空(它显示网格的标题行和永久加载图标):
.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}" );
答案 0 :(得分:1)
我在“Infragistics grid nullable property”中看起来很高,但在我搜索“Ignite UI grid nullable property”之前没有找到任何东西。这有效:
column.For( p => p.Role )
.HeaderText( "Role" )
.DataType( "object" )
.FormatterFunction( "function(obj) { if (!obj) return 'None'; return obj.Description; }" );
当发生这种情况时,我讨厌它。 (source)