Telerik MVC Grid: коллекция внутри колонны - PullRequest
1 голос
/ 05 марта 2012

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

{...}    
    .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")
    ) 
{...}

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

@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 Ответ

1 голос
/ 05 марта 2012

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

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

          }
       }


   }
...