2012-03-05 3 views
1

Я использую MVC сетки Telerik в моем проекте, который действительно хорош. К сожалению, я застрял наконец. Проблема в том, что я хочу показать коллекцию внутри столбца. Коллекция является собственностью моей модели пользователя. Вот пример кода:Telerik MVC Grid: Collection Inside Column

{...}  
    .Columns(columns => 
    { 
     columns.Bound(u => u.Id).Title("No.").Width(100); 
     columns.Bound(u => u.UserName).Title("User Name"); 
     columns.Bound(u => u.CompanyName).Title("Company Adı"); 
     columns.Template(u => 
      { 
       foreach(var item in u.Roles) 
       { 

       } 
      }).Title("Roller"); 
     columns.Command(commands => 
      {      
       commands.Custom("viewDetails") 
       .Text("Detail") 
       .DataRouteValues(route => route.Add(o => o.Id).RouteKey("UserAccountId")) 
       .Ajax(false) 
       .Action("UserAccountRead", "Account"); 
       commands.Delete().ButtonType(GridButtonType.ImageAndText); 
      }) 
     .Width(200); 
    }) 
    .Sortable() 
    .Pageable(paging => paging.PageSize(10)) 
    .Localizable("en-EN") 
    ) 
{...} 

В цикле Еогеасп я пытался много вещей, чтобы отобразить роли пользователей, но не удалось.

@item.Name 
I Got : Error: Only assignment, call, increment, decrement and new object expressions can be used as a statement 

@:<text>@item.Name</text> 
I Got: ; required 

И так далее ... Что я должен писать в качестве инструкции только для того, чтобы колонка отображала роли пользователя?

ответ

1

Вы можете добавить свойство ReadOnly к своей модели, которое возвращает упрощенный отформатированный текст для вас. например, вы:

partial class MyModel{ 
     public string RolesAsString 
     { 
      get{ 
       string result=""; 
       foreach(var item in this.Roles) 
       { 
        result += string.format("{0},",item); 
       } 
       return result.trim(","); 

      } 
     } 


    } 
+0

Спасибо за ваше решение Махмуд. Я также решил проблему с: 'columns.Template ( @

    @foreach (VAR роль в item.Roles) {
  • @ role.Name
  • }
) .title ("Роликовый");' –

+0

Но ваше решение делает проблему в обратных вызовах ajax (если они есть). –

Смежные вопросы