我的问题是我有分层网格(Master和Child)让我说我有一个部门网格它包含员工网格列表,他们都使用相同的数据源。 这是我的GridChild代码:
function detailInit (e){
var msterRow = e.sender.items().index(e.masterRow).toString();
var grid = $("<div id='childGrid"+msterRow+"'
class=childGrid'/>").appendTo(e.detailCell).kendoGrid({
data: e.data.DeptEmployees,
schema: {
model: { fields: { foo: {--skip--}, bar: {--skip--} } }
},
toolbar: ["create", "cancel", "save"],
editable: "popup",
columns: [ --skip--]
save: function(e){
ajaxUpdateDepartment(msterRow, this.dataSource.data());
}
})
正如您所见,我使用data: e.data.DeptEmployees,
作为子数据源来获取数据。
现在我已经知道如何更新子数据源?
我的尝试:
- 我添加了孩子
dataSource.transport
进行更新,但我的子网格一直在加载。- 因此,我最终配置了
save: function (e)
,只是发送当前子项的所有数据源,但弹出式编辑器根本没有关闭。而且我很难刷新子数据源。- 我也尝试将我的Master和Child Grid转换为ASP Razor 但是没有明确的例子,我怎么能在后端处理它,而且我的子网格包含下拉网格,所以这将是一个很大的重做。我也不知道如何通过它传递自定义参数
我很绝望,除了this one之外,我找不到任何有用的参考资料。但它使用odata,并且我没有子ID 用作参考,因为我只使用我在用户事件中检索的列表。
请帮忙:&#39;(我为这个花了太多时间。
答案 0 :(得分:0)
解决方案是定义传输属性,为了从master获取数据,我只需要定义数据并将其转换为Jason。
看看这些代码:
function detailInit (e){
var msterRow = e.sender.items().index(e.masterRow).toString();
var grid = $("<div id='childGrid"+msterRow+"'
class=childGrid'/>").appendTo(e.detailCell).kendoGrid({
//data: e.data.ChildDetails,
transport: {
read: function (o) {
console.log("child read");
var data = e.data.ChildDetails.toJSON();
o.success(data);
},
update: function (o) {
console.log("child update");
var data = o.data,
arentItem = findByID(data.id);
for (var field in data) {
if(!(field.indexOf("_") === 0)){
arentItem[field] = data[field];
}
}
e.data.dirty = true;
saveChild(record, "@suffix", msterRow, "update");
o.success();
},
destroy: function (o) {
var parentItem = findByID(o.data.id);
preventBinding = true;
e.data.ChildDetails.results.remove(parentItem);
o.success();
saveChild(record, "@suffix", msterRow, "destroy");
},
create: function (o) {
console.log("child create");
var record = o.data;
record.id = index;
index++;
saveChild(record, "@suffix", msterRow, "create");
o.success(record);
}
},
schema: {
model: { fields: { foo: {--skip--}, bar: {--skip--} } }
},
toolbar: ["create", "cancel", "save"],
editable: "popup",
columns: [ --skip--]
}