KendoUI网格。列中的多个值

时间:2013-02-17 22:08:42

标签: asp.net-mvc kendo-ui kendo-grid razor-2

我正在使用Razor和KendoUI开发ASP.NET MVC 4.5项目。我有以下两个类:

public class Rol
    {
        [Key]
        [ScaffoldColumn(false)]
        public int RolId { get; set; }

        [Required]
        [MaxLength(50)]
        public string Name{ get; set; }

        [MaxLength(255)]
        public string Desciption { get; set; }

        public bool Active{ get; set; }

        [DisplayName("Permissions")]
        public virtual ICollection<Permission> Permissions { get; set; }
    }

public class Permission
    {
        [Key]
        [ScaffoldColumn(false)]
        public int PermisoId { get; set; }

        [Required]
        [MaxLength(50)]
        public string Name { get; set; }

        [MaxLength(255)]
        public string Description { get; set; }

        public bool Active { get; set; }

        public ICollection<Rol> Rols { get; set; }
    }

但我不知道如何制作一个包含列的网格:

带有Rol.Name |的

列Rol.Description |列Rol.Active |列包含所有Rol.Permissions.Name(列表)的列

并支持KendoUI的CRUD操作

在视图中我有:

@model IEnumerable<ItemsMVC.Models.Rol>    
    @(
        Html.Kendo().Grid(Model)
            .Name("Grid")
            .Columns(c =>
                {
                    c.Bound(p => p.RolId).Visible(false);
                    c.Bound(p => p.Name);
                    c.Bound(p => p.Description);
                    c.Bound(p => p.Active)
                        .ClientTemplate("#= Active ? 'yes' : 'No' #")
                        .Width(100);
                    **HERE THE LIST OF PERMISSIONS**
                    c.Command(p => { 
                        p.Edit(); 
                        p.Destroy();
                    }).Width(200);
                }        
            )        
            .Pageable(p => p.Enabled(true))
            .Scrollable(s => s.Enabled(true))
            .Sortable(s => s.Enabled(true))
            .Filterable(f => f.Enabled(true))
            .ColumnMenu(c => c.Enabled(true))
            .ToolBar(t => t.Create())
            .Editable(e => e.Mode(GridEditMode.PopUp))
            .DataSource( ds => ds
                .Ajax()
                .Model(model =>model.Id(p => p.RolId))
                .Create(c => c.Action("EditingInline_Create", "Rol"))
                .Read(r => r.Action("Permisos_Read","Rol"))
                .Update(u => u.Action("EditingInline_Update", "Rol"))
                .Destroy(d => d.Action("EditingInline_Destroy", "Rol"))
            )
    )

1 个答案:

答案 0 :(得分:0)

您需要在Rol中创建另一个属性,如

string PermissionList
{
    get ( return [Convert Permissions collection to string of values]; ) 
}

然后,此属性可以调用Permissions并转换为列出Names的字符串。不要尝试在Grid中执行此操作,在Rol类中执行此操作。我还建议将Rol重命名为RoleModel并将PermissionModel权限重命名,但显然这是首选项。