使用ClientTemplates和AjaxBinding时,如何覆盖Telerik MVC Grid编辑器弹出窗口

时间:2011-09-26 18:36:03

标签: razor telerik-mvc

我有一个用户角色列表,我试图在我的网格列中显示,并尝试在编辑弹出窗口中设置自定义模板。

我尝试使用显示/编辑器模板,但发现ajax绑定不支持这些(因为模型总是为null)。因此,列方面的修复是在相关列上使用.ClientTemplate ...这可以在我的表的以下简化示例中使用...

@( Html.Telerik().Grid<UserSearchModel>()
    .Name("Grid")
    .DataKeys(keys => { keys.Add(p => p.UserId); })
    .Columns(columns =>
           {
               columns.Bound(o => o.UserId).Visible(false) ;
               if(Context.User.IsInRole("Admin")) columns.Bound(o=>o.CompanyName).Width(100);
               columns.Bound(o => o.RolesModel).ClientTemplate("<strong><#= RolesModel.RoleName #></strong>");
               columns.Command(commands =>
               {
                   commands.Edit().ButtonType(type);
               }).Width(180).Title("Commands");       
           })
    .DataBinding(dataBinding => dataBinding.Ajax()
                   .Select("_AjaxBinding", "Users")
                           .Update("Edit", "Users")
                               .Insert("Create", "Users")
                 )
    .Resizable(resizing => resizing.Columns(true))
    .Reorderable(reorder => reorder.Columns(true))
    .Editable(editable => editable.Mode(GridEditMode.PopUp))
    .Pageable(p=> p.PageSize(13))
    .Sortable()
    .Scrollable(scrolling => scrolling.Height("400px"))
    .Groupable()
    .Filterable()

但是这不会转移到编辑弹出窗口...所以我的问题是如何设法覆盖弹出窗口以显示我已将.ClientTemplate分配给的列的自定义显示?

我尝试过使用WindowBuilder(.Window(w =&gt; w.Content(“......这里的内容......”))无济于事。每次弹出默认的编辑窗口。

2 个答案:

答案 0 :(得分:3)

有关在ASP.NET MVC中编辑嵌套对象的更多信息,我建议您检查this blog post.

Maybe this help topic will help too.

您还可以指定部分视图,该视图可用作编辑器表单:

.Editable(editing => editing.TemplateName("TemplateName"))

答案 1 :(得分:2)

我能够通过使用约定来实现相同的功能。我将GridEditMode指定为PopUp,然后在以下路径中放置一个与我的模型同名的视图

〜/查看/共享/ EditorTemplate / ModelName.cshtml

我这样做是因为网格有相同类型的子节点,我实际上并不需要指定模板。