0

这是精简版的代码:

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 是脏的。

当我调用同步时,如果我只是删除,什么都不会发生。我错过了什么?谢谢你。

4

1 回答 1

1

您需要editabletrue.grid

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

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

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

此外,设置editable.confirmationfalse禁用删除时提示确认的弹出窗口。

编辑

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

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

你可以看到它在这里运行:http: //jsfiddle.net/OnaBai/dq6jh3yp/4/

于 2014-10-07T13:46:35.847 回答