gpt4 book ai didi

javascript - 填充 datasource._destroyed 时 Kendo UIsync() 不会触发(脏)

转载 作者:行者123 更新时间:2023-12-03 11:43:14 26 4
gpt4 key购买 nike

这是代码的精简版本:

gridDataSource = new kendo.data.DataSource({
batch: true,
transport: {
read: {
url: 'Equipment'
},
destroy: {
url: 'Equipment',
contentType: "application/json",
dataType: 'json',
type: "DELETE"
},
parameterMap: function (options, operation) {
if (operation == "read") {
return "this=works-fine";
} else {
alert('not reading');
return kendo.stringify(options.models);
}
}
},
schema: {
id: "EquipmentId",
fields: {
Value: { type: "number" }
}
}
});

kendoGrid = gridObj.kendoGrid({
dataSource: gridDataSource,
selectable: 'row',
navigatable: true,
change: rowSelect,
sortable: true,
pageable: false,
columns: [
{ field: "Value" },
]
}).data('kendoGrid');

读取效果很好,我用它删除了一行(或多行)(selectedRow 已正确填充,为简洁起见只是跳过):

    $('#footer-remove').off().on('click', function () {
kendoGrid.removeRow('table tr[data-uid="' + selectedRow.uid + '"]');
console.log(gridDataSource._destroyed);
});

它显示在gridDataSource._destroyed中,我所有的测试都表明gridDataSource是脏的。

当我调用同步时,如果我只是删除,则不会发生任何事情。我缺少什么?谢谢。

最佳答案

您需要在网格初始化时将editable设置为true

kendoGrid = gridObj.kendoGrid({
dataSource: gridDataSource,
selectable: 'row',
navigatable: true,
change: rowSelect,
sortable: true,
pageable: false,
editable: true,
columns: [
{ field: "Value" },
]
}).data('kendoGrid');

如果您不希望单元格可更新(只是被删除),那么您应该按如下方式设置可编辑:

editable: {
destroy: true,
update: false
},

此外,将 editable.confirmation 设置为 false 会禁用删除时提示确认的弹出窗口。

编辑:

destroy没有被执行的原因是Datasource定义有错误,schema应该包含model 元素,然后是定义(您错过了 model)。

schema: {
model: {
id: "EquipmentId",
fields: {
Value: { type: "number" }
}
}
}

您可以在此处看到它正在运行:http://jsfiddle.net/OnaBai/dq6jh3yp/4/

关于javascript - 填充 datasource._destroyed 时 Kendo UIsync() 不会触发(脏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com