我已经搜遍了所有的解决方案并尝试了许多建议(只是说如果你认为我太懒了) 我是一个剑道菜鸟,所以不确定我错过了什么?
正如标题所说,我有一个项目网格,想要内联编辑它们。一切正常,但似乎我的编辑器模板被忽略,并且在编辑模式下显示2个输入(因为必须选择的子对象是具有Id和Name属性的复杂对象)
ps:抱歉格式化。好像我的浏览器没有显示这个Windows工具栏? 剑道MVC网格
Html.Kendo().Grid<MyViewModel>()
.Name("Grid")
.Columns(columns =>
{
columns.Bound(o => o.Id).Hidden(true);
columns.Bound(o => o.Product).EditorTemplateName("ProductsListTemplate");
...other columns
columns.Command(command =>
{
command.Edit();
command.Destroy();
}).Width(180);
})
.AutoBind(true)
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine).Enabled(true))
.Filterable(ftb => ftb.Mode(GridFilterMode.Row))
.Resizable(resize => resize.Columns(true))
.Selectable(sel => sel.Mode(GridSelectionMode.Single)
.Enabled(true))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(c => c.Id);
model.Field(c => c.Product).Editable(true);
...other fields...
})
.Create(update => update.Action("Create", "MyController"))
.Read(read => read.Action("Read", "MyController"))
.Update(update => update.Action("Edit", "MyController"))
.Destroy(update => update.Action("Delete", "MyController"))
))
ProductsListTemplate.cshtml(在Shared / EditorTemplates中,产品选项在viewdata中显示为IEnumerable)
@(Html.Kendo().DropDownList()
.Name("MyChildViewModel")
.DataValueField("Id")
.DataTextField("Name")
.BindTo((IEnumerable) ViewData["ProductOptions"])
)
MyViewModel 公共类MyViewModel { public int Id {get;组; }
[Display(Name = "Product")]
[UIHint("ProductsListTemplate")]
public MyChildViewModelProduct { get; set; }
......其他属性
public class MyChildViewModel
{
public string Id { get; set; }
public string Name { get; set; }
}