2013-12-18 54 views
0

使用编辑器弹出窗口(在集合内部)制作网格时遇到一些困难。 我发现一个example这几乎就像我想要的,但嵌套的网格 ,有一个GridEditMode.InCell,我需要GridEditMode.PopUp。具有嵌套集合,复杂对象的Kendo网格

当我试图改变CellEditing PopEditing收到以下错误: “的插入数据绑定设置通过插入命令要求请注明在数据绑定配置中的插入动作或网址。”

我想要的整个对象在记录父对象时被记录。

@(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() 
) 

编辑有什么办法?

回答

0

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

如果你想实现Popup编辑+批量更新,你将不得不通过JavaScript声明你的网格,因为它为你提供了更多的灵活性。 或者您可以使用this代码库中涵盖的方法实现类似于弹出式编辑+批量更新。

+0

如果我通过javsacript声明网格可以实现我想要的吗? 你会有一个例子或者我可以阅读的例子吗? 我要检查您提供的链接。 非常感谢 – Gringo

+0

我看到您指向我的代码库([link] http://www.kendoui.c​​om/code-library/mvc/grid/external-editing-container-for-batch-editable- grid.aspx)。问题是为什么我应该手动设置EyeColorIndex的值?不应该将下拉列表绑定到EyecColorIndex属性?在该示例中,EyeColorIndex的值在save方法中更改。 (e.model.set(“EyeColorIndex”,val);) e.model.set(“EyeColorIndex”,val); – Gringo