J'ai un problème étrange dans Kendo UI - que je ne comprends pas.
Voici mon code.
$(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);
}
}
});
});
Voici la situation.
Lorsque le $("#test_button").on("click", function()
est déclenché, il vérifie les rangées sélectionnées dans la grille - et supprime les rangées.
Si je sélectionne 2 lignes, cela supprime 2 lignes. Et les 2 lignes disparaissent de la Grille.
Mais, je vois quelque chose d'étrange -
Lorsque 2 lignes sont supprimées, il y a 2 requêtes POST - ce qui est bien.
Mais les paramètres de la première requête POST sont les suivants
models[0][field1] 3
models[0][field2] poioioi
models[0][field3] oiuoiuuigbhkjh
models[0][field4] kjh kjhkjhyt
Et les paramètres de la deuxième requête POST sont les suivants
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
Et je comprends que, je peux accéder aux données dans le serveur comme ceci
foreach ($_POST['models'] as $model) {
echo $model['field1'];
}
Je me demandais s'il était possible de n'envoyer qu'une seule requête - éventuellement la deuxième requête POST uniquement, car je peux supprimer les deux lignes en une seule requête.
Ou bien envoyer 2 demandes distinctes mais avec un seul modèle à la fois ?
Est-ce possible ?
Toute aide serait grandement appréciée.