jquery - Kendo UI DataSource Destroy 函数多次调用多条记录

标签 jquery telerik kendo-ui

我在 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/

相关文章:

javascript - 使用Kendo Dataviz Vertical Bullet Graph,如何添加类似于条形图的标签?

angular - kendo-grid加载时如何显示kendo加载图标?

javascript - 如何从特定选定行的事件发送者数据中获取模型数据?

jquery - 事件处理的快捷方式,执行 off+on+return false

jquery - 将这两个 HTML + JQuery 脚本页面合并为一个

kendo-ui - Kendo 网格/数据源/分组

c# - Telerik 报告中的嵌套表?

jquery - 尝试用 jQuery 替换图像文件名

jquery - Jquery 调整图像大小

c# - 如何以编程方式在 DataTable 上使用 Telerik RadGrid FilterExpression