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。我还能错过什么呢?
- 如果需要更多的信息,只要问,我会很乐意提供:)
当在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