2013-02-17 9 views
0

Je travaille sur un projet ASP.NET MVC 4.5 avec Razor et KendoUI. J'ai les deux catégories suivantes:Grille KendoUI. Plusieurs valeurs dans une colonne

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; } 
    } 

Mais je ne sais pas comment faire une grille qui comporte des colonnes:

colonne avec Rol.Name | colonne avec Rol.Description | colonne avec Rol.Active | colonne avec tous Rol.Permissions.Name (liste)

Et spport les opérations CRUD de KendoUI

De l'avis je:

@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")) 
      ) 
    ) 
+0

Utilisez un ClientTemplate pour composer plusieurs champs dans une colonne. – OnaBai

Répondre

0

Vous devrez créer une autre propriété dans Rol appelé quelque chose comme

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

Cette propriété peut ensuite appeler Autorisations et convertir en liste de chaînes, vraisemblablement. N'essayez pas de faire cela dans la grille, faites-le dans votre classe Rol. Je suggère également de renommer Rol en RoleModel et Permission en PermissionModel, mais évidemment c'est la préférence.

Questions connexes