0

对我的看法,我使用teleriks开源网格MVC 3,我有网格3列一个:MVC 3 Telerik的网格编辑模式

杂牌 - 电子邮件 -Roles

的问题得到的是:我想我的角色列作为下拉列表,当页面加载时已经可编辑(所以我不想要任何编辑/更新按钮或东西),所以当管理员更改dropdownlist中的选定项目时,用户角色将被更新。

任何想法如何做到这一点?

查看

@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) 
        ) 
         ) 

视图模型

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

您需要使用模板列和定义模板的下拉列表:

@(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

像魅力一样工作,谢谢! – Timsen

相关问题