我希望将可编辑的kendo网格作为部分视图控件,以便在需要时多次使用它。
我的客户和员工有多个地址 所以我想在局部视图中为地址制作可编辑的kendo网格,以便在员工和客户中使用它。
我对kendo网格的部分视图是
@model AddressesModel
@using Kendo.Mvc.UI
@{
var prefix = ViewData.TemplateInfo.HtmlFieldPrefix;
var propertyPrefixName = "";
if (string.IsNullOrEmpty(prefix))
{
propertyPrefixName = nameof(AddressesModel.AddressesList);
}
else
{
propertyPrefixName = prefix + "." + nameof(AddressesModel.AddressesList);
}
var cityId = nameof(AddressModel.CityId);
var email = nameof(AddressModel.Email);
}
@(Html.Kendo().Grid(Model.AddressesList)
.Name("AddressGrid")
.ToolBar(tools => tools.Create().Text(GlobalResources.Add))
.Editable(editable
=> editable.Mode(GridEditMode.InCell).CreateAt(GridInsertRowPosition.Bottom))
.Columns(columns =>
{
columns.Bound(p => p.CityId).ClientTemplate("#= " + cityId + " #" +
"<input type='hidden' name='" + propertyPrefixName + "[#= index(data)#]." + cityId + "' value='#= " + cityId + " #' />"
);
columns.Bound(p => p.Email).ClientTemplate("#= " + email + " #" +
"<input type='hidden' name='" + propertyPrefixName + "[#= index(data)#]." + email + "' value='#= " + email + " #' />"
);
columns.Command(command => command.Destroy()).Width(20).Title(GlobalResources.Delete);
})
.DataSource(dataSource => dataSource.Ajax()
.Model(model =>
{
model.Id(p => p.Id);
model.Field(p => p.Id).Editable(false);
})
.ServerOperation(false)
)
)
<script>
function index(dataItem) {
var data = $("#AddressGrid").data("kendoGrid").dataSource.data();
return data.indexOf(dataItem);
}
</script>
并且在员工视图中我使用了这样的
@Html.Partial("_AddressesGrid", Model.Addresses, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix =nameof(CreateEmployeeModel.Addresses)} })
它没有编辑!
请帮忙,我如何在局部视图中制作可编辑的剑道网格!!
请注意,如果我将kendo网格放在没有局部视图的员工视图中,它就能正常工作。
答案 0 :(得分:0)
更改
@Html.Partial("_AddressesGrid", Model.Addresses, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix =nameof(CreateEmployeeModel.Addresses)} })
到
@Html.Partial("_AddressesGrid", Model.Addresses)
小心不要使用HtmlFieldPrefix,kendo会使编辑器单元格模板出现错误名称,这样我就会出现上述错误