【问题标题】:MVC 3 telerik grid edition modeMVC 3 Telerik 网格版模式
【发布时间】:2012-02-18 05:06:30
【问题描述】:

在我的一个观点中,我正在为 MVC 3 使用 Teleriks 开源网格。我在网格中有 3 列:

-名称 -电子邮件 -角色

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

知道怎么做吗?

查看

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

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 model-view-controller telerik telerik-grid


    【解决方案1】:

    您需要使用模板列并将模板定义为下拉列表:

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

    我无法测试代码,但应该非常接近。

    【讨论】:

      【解决方案2】:

      您希望网格中的每个项目都是可编辑的?只需为呈现文本框的列使用模板。看这个演示:http://demos.telerik.com/aspnet-mvc/grid/templatesserverside

      【讨论】:

      • 我只希望我的角色列是可编辑的,但该列中的项目必须显示为下拉列表
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      相关资源
      最近更新 更多