我有一个MVC 5应用程序,我正在使用Telerik Grid。到目前为止一切都很好。
除了我尝试使用调用可编辑弹出窗口的自定义命令,就像编辑命令设置为GridEditMode.Popup
时一样。这将显示Grid绑定到的模型中的数据子集。
我在这里看过这个演示 - > http://demos.telerik.com/aspnet-mvc/grid/custom-command 在自定义命令,但我想知道如何将其转换为可编辑的屏幕。
我意识到这有点模糊,但我不确定在这一点上要问什么,更具体的问题?如果我不得不尝试,我想我想知道是否有替代方法可以手动构建整个编辑屏幕,在html中,并将其嵌入到该页面上,就像演示节目一样。
我有以下型号。我正试图让孩子,ModelB,在它自己的弹出窗口。
ModelA
Guid ID
string Name
IList<ModelB> Roles
ModelB
Guid ID
Guid ModelA_ID
string Role
答案 0 :(得分:2)
我猜你需要在弹出编辑器中的另一个网格中编辑子项(在MVC editor template内)。子网格需要绑定到自己的控制器/操作,这些控制器/操作将父ID(modelA_ID
)作为输入参数。
主网格可能如下所示:
@(Html.Kendo().Grid<ModelA>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(e => e.Name);
columns.Command(command =>
{
command.Edit();
command.Destroy();
});
})
.ToolBar(tools => tools.Create())
.Editable(editable => editable
.Mode(Kendo.Mvc.UI.GridEditMode.PopUp)
.TemplateName("MyTemplate"))
.Pageable().Sortable().Filterable()
.DataSource(source => source.Ajax()
.Model(model => model.Id(e => e.ID))
.Read(read => read.Action("Read_ModelA", "MyController"))
.Update(update => update.Action("Update_ModelA", "MyController"))
.Create(create => create.Action("Create_ModelA", "MyController"))
.Destroy(destroy => destroy.Action("Destroy_ModelA", "MyController"))))
并在编辑器模板(MyTemplate.cshtml
)中可能有:
@model ModelA
@Html.HiddenFor(m => m.ModelA_ID)
@(Html.Kendo().Grid<ModelB>()
.Name("childGrid")
.Columns(columns =>
{
columns.Bound(o => o.Role);
columns.Command(command =>
{
command.Edit();
command.Destroy();
});
})
.ToolBar(tools => tools.Create())
.Editable(editable => editable
.Mode(Kendo.Mvc.UI.GridEditMode.InLine))
.Pageable().Sortable().Filterable()
.DataSource(source => source.Ajax()
.Model(model => model.Id(e => e.ID))
.Read(read => read.Action("Read_ModelB", "MyController").Data("getCurrentParentId"))
.Create(create => create.Action("Create_ModelB", "MyController").Data("getCurrentParentId"))
.Update(update => update.Action("Update_ModelB", "MyController"))
.Destroy(destroy => destroy.Action("Destroy_ModelB", "MyController")))
.ToClientTemplate()
)
,javascript函数getCurrentParentId
如下所示:
function getCurrentParentId() {
return {
modelA_ID: $('#ModelA_ID').val()
}
}