Telerik's Kendo Grid组件与GridEditMode.指定了Popup和TemplateNam

本文关键字:GridEditMode Popup TemplateNam 组件 Grid Kendo Telerik | 更新日期: 2023-09-27 18:11:52

我有一个视图,看起来像这样:

@model Wellbore
@(Html.Kendo().Grid<WellboreSection>()
        .Name("wellboresectiongrid")
        .Columns(columns =>
        {
            columns.Bound(p => p.Name);
            columns.Bound(p => p.Lenght);
            columns.Bound(p => p.SectionNumber);
            columns.Bound(p => p.Volume);
            columns.Bound(p => p.HoleDiameter);
            columns.Command(command =>
            {
                command.Edit();
                command.Destroy();
            }).Width(240);
        })
        .ToolBar(toolbar => toolbar.Create())
        .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("WellboreSectionPopupTemplate"))
        .Sortable()
        .Scrollable()
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(10)
            .Events(events => events.Error("KendoGrid.ErrorHandler"))
            .Model(model => model.Id(p => p.Id))
            .Create(create => create.Action("WellboreSection_Create", "WellboreSection",
                new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
            .Read(read => read.Action("WellboreSection_Read", "WellboreSection",
                    new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
            .Update(update => update.Action("WellboreSection_Update", "WellboreSection",
                    new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
            .Destroy(destroy => destroy.Action("WellboreSection_Destroy", "WellboreSection",
                    new RouteValueDictionary(new Dictionary<string, object>() { { "wellboreId", Model.Id } })))
      ))

和一个WellboreSectionPopupTemplate。CSHTML文件看起来像这样:

@model WellboreSection
blaaaaah!!!

但是,当我在网格中单击edit时,将显示一个包含对象所有字段的弹出框。

真正让我困惑的是,我有另一个网格看起来像这样:

<div class="container">
    <div class="row">
        <div class="col-md-12 sl-table">
            @(Html.Kendo().Grid<Customer>()
                  .Name("grid")
                  .Columns(columns =>
                  {
                      columns.Bound(p => p.Name);
                      columns.Bound(p => p.StreetAddress);
                      columns.Bound(p => p.ZipCode);
                      columns.Bound(p => p.City);
                      columns.Bound(p => p.State);
                      columns.Bound(p => p.Country);
                      columns.Bound(p => p.MainPhoneNumber);
                      columns.Bound(p => p.ContactPerson);
                      columns.Bound(p => p.ContactPersonEmail);
                      columns.Bound(p => p.ContactPersonPhone);
                      columns.Bound(p => p.ContactPersonPhone2);
                      columns.Command(command =>
                      {
                          command.Edit();
                          command.Destroy();
                      }).Width(180);
                  })
                  .ToolBar(toolbar => toolbar.Create())
                  .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("CustomerPopUpTemplate"))
                  .Pageable()
                  .Sortable()
                  .Scrollable()
                  .HtmlAttributes(new {style = "height:500px;"})
                  .DataSource(dataSource => dataSource
                      .Ajax()
                      .PageSize(10)
                              .Events(happening => happening.Error("KendoGrid.ErrorHandler"))
                      .Model(model => model.Id(p => p.Id))
                      .Create(update => update.Action("EditingPopup_Create", "CustomerManagement"))
                      .Read(read => read.Action("EditingPopup_Read", "CustomerManagement"))
                      .Update(update => update.Action("EditingPopup_Update", "CustomerManagement"))
                      .Destroy(destroy => destroy.Action("EditingPopup_Destroy", "CustomerManagement"))))
        </div>
    </div>
</div> 

实际显示模板100%正确。我已经检查了浏览器,当我单击编辑或在网格中添加新按钮时,它不会调用WellboreSectionPopupTemplate。我还能错过什么呢?

  • 如果需要更多的信息,只要问,我会很乐意提供:)

Telerik's Kendo Grid组件与GridEditMode.指定了Popup和TemplateNam

当在MVC中创建自定义模板时,它们必须被放置在某个位置。

搜索的位置为:

  • /区域/AreaName/视图/ControllerName/EditorTemplates/TemplateName
  • /区域/AreaName/视图/共享/EditorTemplates/TemplateName
  • /视图/ControllerName/EditorTemplates/TemplateName
  • /视图/共享/EditorTemplates/TemplateName

显示模板路径将是相同的,只是在路径中使用/DispayTemplates/而不是/EditorTemplates/

模板名也必须符合约定:

  • TemplateHint from ModelMetadata
  • DataTypeName from ModelMetadata
  • 类型的名称
  • 如果对象不复杂:" String "
  • 如果对象复杂且有接口:" object "
  • 如果对象很复杂且不是接口:通过类型的继承层次递归,尝试每个类型名称

来源:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html