MVC 3 Telerik Grid, режим редактирования - PullRequest
0 голосов
/ 25 января 2012

на одном из моих просмотров я использую сетку Teleriks с открытым исходным кодом для MVC 3. У меня есть 3 столбца в сетке:

-Имя -Email -Roles

проблема, которая у меня возниклаэто: я хочу, чтобы мой столбец ролей был выпадающим списком, который уже можно редактировать при загрузке страницы (поэтому я не хочу никаких кнопок редактирования / обновления или чего-либо еще), поэтому, когда администратор изменит выбранный элемент в выпадающем списке, роль пользователя будет обновлена.

Есть идеи, как это сделать?

Просмотр

@model IEnumerable<UserViewModel>
    @(Html.Telerik().Grid(Model)
          .Name("Grid").TableHtmlAttributes(new { width="800"})
            .Columns(columns =>
            {
                //if (userIsInWhateverRole){
                //    columns.Template(o => Html.Action(GenerateYourLinkStuffHere));
                //}
                columns.Bound(o => o.Name).Width(150);
                columns.Bound(o => o.Email).Width(120);
                columns.Bound(o => o.Roles).Width(120);
            })
            .Sortable()
            .Scrollable()
            .Groupable()
            .Filterable()
            .Pageable(paging =>
                paging.PageSize(5)
                      )
                          )

ViewModel

public class UserViewModel
{

    public int Id { get; set; }

    [Microsoft.Build.Framework.Required]
    [Display(Name = "User name")]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    public string[] Roles { get; set; }

    public string Email { get; set; }

    public bool Admin { get; set; }

}

Управление

public ActionResult ManageRoles()
{
    var users = Membership.GetAllUsers().Cast<MembershipUser>().Select(x=> new UserViewModel{ Name = x.UserName, Email = x.Email, Roles = Roles.GetAllRoles()});

    return View(users);
}

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Вам необходимо использовать столбец шаблона и определить шаблон как раскрывающийся список:

@(Html.Telerik().Grid(Model)
    .Name("Grid").TableHtmlAttributes(new { width="800"})
    .Columns(columns =>
    {
        //if (userIsInWhateverRole){
        //    columns.Template(o => Html.Action(GenerateYourLinkStuffHere));
        //}
        columns.Bound(o => o.Name).Width(150);
        columns.Bound(o => o.Email).Width(120);
        columns.Template (
            @<text>
                @Html.DropDownList("Roles", new SelectList(item.Roles))
            </text>
        ).Width(120);
    })
    .Sortable()
    .Scrollable()
    .Groupable()
    .Filterable()
    .Pageable(paging => paging.PageSize(5))
)

Я не могу проверить код, но он должен быть очень близко.

0 голосов
/ 25 января 2012

Вы хотите, чтобы каждый элемент в сетке был редактируемым?Просто используйте шаблон для столбца, который отображает текстовое поле.Посмотрите эту демонстрацию: http://demos.telerik.com/aspnet-mvc/grid/templatesserverside

...