如何从UserId

时间:2015-10-26 19:00:12

标签: c# asp.net-mvc-4 kendo-grid kendo-asp.net-mvc

我正在尝试完成显示项目评论评论的任务。 在此视图中,我使用的是Kendo UI Grid:

视图

 @(Html.Kendo().Grid<Model>()
    .Name("ReviewCommentsGrid")
    .Columns(
       columns =>
       {
          columns.Bound(rc => rc.UserId);
          columns.Bound(rc => rc.Comment);
          columns.Bound(rc => rc.CommentDate);
          columns.Bound(rc => rc.UpdateCommentDate);
          columns.Command(cmd => cmd.Edit());
       }
    )
    .Editable(editable => editable.Mode(GridEditMode.InLine);
    .Pageable()
    .Sortable()
    .DataSource(
        dataSource => dataSource
        .Ajax()
        .Sort(sort => sort.Add("UpdateCommentDate").Descending())
        .Sort(sort => sort.Add("CommentDate").Descending())
        .Model(model =>
        {
            model.Id(rc => rc.ReviewCommentId);
            model.Field(rc => rc.Comment).Editable(true);
            model.Field(rc => rc.UserId).Editable(false);
            model.Field(rc => rc.CommentDate).Editable(false);
            model.Field(rc => rc.UpdateCommentDate).Editable(false);
        })
        .Events(events => events.Error("error_handler"))
        .Read(read => read.Action("ReadReviewComments", "Controller"))
        .Update(update => update.Action("UpdateReviewComment", "Controller"))
    )
 )

问题 如此处所示,我在第1列中使用UserId。这是我的ASP.NET Membership表中的Guid。但是,我想显示为UserName,而不是显示为Guid。我不能让细胞成为Guid。

我尝试过以下变化:

columns.Bound(rc => Membership.GetUser(rc.UserId).UserName);

结果:空白表格单元格

columns.Template(@<text>@Membership.GetUser(rc.UserId).UserName</text>);

结果:空白表格单元格

任何建议都将不胜感激 谢谢。

修改 我决定放弃AjaxDataSource绑定。我首先将模型列表绑定到视图的父ViewModel(如果在控制器中填充了此列表)。

1)从网格中删除DataSource绑定 2)删除Command.Edit()并将其替换为Command.Custom(),如下所示:

columns.Command(cmd => cmd.Custom("Update").Text("Update").Click("updateComment"));

3)现在由于没有Ajax,我可以使用服务器端Column.Template
4)现在,因为我能够与服务器端绑定:

columns.Template(@<text><span>@Membership.GetUser(item.UserId).UserName</span></text>).Title("User Name);

谢谢你,
杰森

1 个答案:

答案 0 :(得分:0)

您必须将ClientTemplate与Ajax绑定一起使用。

columns.Template(@<text></text>)
       .ClientTemplate(@<text>@Membership.GetUser(#= UserId #)
                                         .UserName</text>);

http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/configuration#clienttemplate