0

我正在使用剑道 UI 网格。基本上,我想要做的是将网格绑定到以 json 格式发送的远程数据上并能够对其进行编辑。Grid 接收数据并根据需要显示它。但是,当我想编辑一个单元格时,php 文件中收到的请求为空,发送的类型是“创建”,而我希望它是“更新”。

这是使用的代码: - javascript 包含网格声明

$(document).ready(function() {

    var dataSource = new kendo.data.DataSource({
        batch: true,
        transport: {
            read: {
                dataType: "json",
                type: "POST",
                url: "testgrid.php?type=read"
            },
            update: {
                dataType: "json",
                type: "POST",
                url: "testgrid.php?type=update"
            },
            create: {
                dataType: "json",
                type: "POST",
                url: "testgrid.php?type=create"
            },
            destroy: {
                dataType: "json",
                type: "POST",
                url: "testgrid.php?type=destroy"
            }
        },
        schema: {
            data: function(result) {
                return result.Result || result.data;
            },
            model: {
                id: "bbmindex",
                fields: {
                    totalvente: {type: "number"}
                }

            },
            total: function(result) {
                return result.totalData || result.PageSize || result.length || 0;
            }
        }           
    });
    var param = {
        columns: [
            {
                field: "naturetravaux", title: "nature travaux"
            },
            {
                field: "totalvente", title: "total vente"
            }
        ],
        selectable: 'multiplerows',
        editable: true,
        toolbar: ["create", "save", "cancel", "destroy"],
        dataSource: dataSource
    };
    $("#grid").kendoGrid(param);
});

- php 脚本将数据发送到数据源

<?php

header('Content-Type: application/json');

$request = json_decode(file_get_contents('php://input'));
$type = $_GET['type'];
$result = null;

if ($type == 'create') {
    some code 
} else if ($type == 'read') {
    some code which send the data
} else if ($type == 'update') {
    some code
}
echo json_encode($result);
?>

关于这里有什么问题的任何想法?任何帮助将不胜感激,在此先感谢您

马丁

4

2 回答 2

0

如果您的服务器收到一个create是因为id编辑的记录是0,nullundefined。请检查您是否从服务器获得了一个名为bbmindex但不是0

于 2013-05-23T13:07:15.173 回答
0

您希望请求以 JSON 形式发布,但默认情况下 Kendo DataSource 不会这样做。您需要使用parameterMap选项并使其返回 JSON:

 parameterMap: function(data, type) {
    return kendo.stringify(data);
 }
于 2013-05-23T13:25:11.973 回答