我在 Kendo UI 中遇到一个奇怪的问题 - 我不明白。
这是我的代码。
$(document).ready(function() {
var kendo_dataSource = new kendo.data.DataSource({
autoSync: true,
batch: true,
transport: {
read: {
url: "<?php echo BASE_URL . 'kendo/kendo_grid_read' ?>",
dataType: "json"
},
destroy: {
url: "<?php echo BASE_URL . 'kendo/kendo_grid_destroy' ?>",
dataType: "json",
type: "POST"
},
parameterMap: function(data, type) {
if (type == "destroy") {
return {models: data.models}
}
}
},
serverFiltering: true,
serverGrouping: true,
serverPaging: true,
page: 1,
pageSize: 5,
schema: {
data: "results",
total: "total",
model: {
id: "field1"
}
}
});
$("#kendo_grid2").kendoGrid({
dataSource: kendo_dataSource,
height: 300,
filterable: true,
sortable: true,
pageable: true,
selectable: "multiple row",
columns: [
{
field: "field1"
},
{
field: "field2"
},
{
field: "field3"
}
]
});
$("#test_button").on("click", function() {
var selectedRows = $("#kendo_grid2").data("kendoGrid").select();
if (selectedRows.length > 0) {
for (var i = 0; i < selectedRows.length; i++) {
var dataItem = $("#kendo_grid2").data("kendoGrid").dataItem(selectedRows[i]);
console.log(dataItem);
kendo_dataSource.remove(dataItem);
}
}
});
});
情况是这样的。
当 $("#test_button").on("click", function()
被触发时,它会检查网格中选定的行 - 并删除这些行。
如果我选择 2 行,则会删除 2 行。这两行从网格中消失了。
但是,我看到了一些奇怪的东西 -
当删除 2 行时,有 2 个 POST 请求 - 这很好。
但是第一个POST请求的参数是
models[0][field1] 3
models[0][field2] poioioi
models[0][field3] oiuoiuuigbhkjh
models[0][field4] kjh kjhkjhyt
第二个POST请求的参数是
models[0][field1] 3
models[0][field2] poioioi
models[0][field3] oiuoiuuigbhkjh
models[0][field4] kjh kjhkjhyt
models[1][field1] 4
models[1][field2] kjhk hkiui
models[1][field3] khkj
models[1][field4] mkhkhkhkjhghgfgdf
据我所知,我可以像这样访问服务器中的数据
foreach ($_POST['models'] as $model) {
echo $model['field1'];
}
我想知道是否可以仅发送一个请求 - 可能仅发送第二个 POST 请求,因为我可以在一个请求中删除 2 行。
或者发送 2 个单独的请求但一次仅发送一个模型?
这可能吗?
任何帮助将不胜感激。
最佳答案
这是由autoSync
设置引起的。当您将其设置为 true 时,数据源会在每次更改后调用 sync
方法。将 autoSync
设置为 false
并手动调用 sync()
方法将导致数据源仅对所有已删除的数据项发出一个请求。
关于jquery - Kendo UI DataSource Destroy 函数多次调用多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15946354/