具有嵌套集合,复杂对象的Kendo网格

时间:2013-12-18 13:47:30

标签: kendo-ui kendo-grid

使用编辑器pop创建一个网格有一些困难,它在集合中。 我发现example几乎就像我想要的那样,但网格  嵌套,有一个GridEditMode.InCell,我需要GridEditMode.PopUp。

当我尝试更改CellEditing PopEditing时会收到以下错误: “插入命令需要插入数据绑定设置。请在DataBinding配置中指定插入操作或URL。”

我希望在记录父对象时记录整个对象。

@(Html.Kendo().Grid<EmployeeViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Command(comm =>
{
comm.Edit();
});
columns.Bound(e => e.EmployeeID);
columns.Bound(e => e.FirstName);
columns.Bound(e => e.LastName);
columns.Bound(e => e.Title);        
columns.Bound(e => e.HireDate).Format("{0:d}");
columns.Bound(e => e.Territories)
.ClientTemplate("#=territoriesTemplate(Territories)#");       
})
.Editable(ed=>ed.Mode(GridEditMode.PopUp))
.Pageable()  
.Events(ev=>ev.Edit("onEdit")) 
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(5)        
.Model(model =>
{
model.Id(e => e.EmployeeID);
model.Field(e => e.EmployeeID).Editable(false);
model.Field(e => e.Territories).DefaultValue(new List<TerritoryViewModel>());
})
.Events(ev=>ev.Change("onDsChange"))
.Read(read => read.Action("Read", "Home"))
.Update(update => update.Action("Update", "Home").Data("serialize")))
)

这是需要使用GridEditMode.PopUp编辑的嵌套网格

@(Html.Kendo().Grid<TerritoryViewModel>()
.Name("TerritoryGrid")
.Sortable()
.Columns(cols =>
{
cols.Bound(b => b.TerritoryID);
cols.Bound(b => b.TerritoryDescription);
})
 .Editable(ed=>ed.Mode(GridEditMode.InCell))
.AutoBind(false)
.DataSource(ds => ds.Ajax().Model(mo => { 
mo.Id(m => m.TerritoryID);
mo.Field(f => f.TerritoryID).Editable(false);
}))
.ToClientTemplate()
)

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

我假设您找到了以下demo,并且您想要将其更改为使用嵌套网格的弹出式编辑。可以使网格使用弹出编辑,但嵌套网格将执行单独的请求。

如果您想同时实现Popup编辑+批量更新,则必须通过JavaScript声明Grid,因为它为您提供了更大的灵活性。 或者,您可以使用 this 代码库中涵盖的方法来实现类似于弹出式编辑+批量更新。