0

我无法使用 Kendo UI Listview 保存对服务器的更改。

数据源配置如下:

var listViewDataSource = new kendo.data.DataSource({
        transport: {
            read: {
                url: MyServiceURL
            },
            update: function() {
                console.log("test"); // I expected to enter this function 
                                     //  when the user changes data on the 
                                     //client, never happens
            }
        },
        schema: {
            Id: "Id",
            fields: {
                DeptName: {
                    editable: false,
                },
                HourRate: {
                    type: "number",
                    editable: true
                },
                ShowOnSavings: {
                    type: "boolean",
                    editable: true
                },
                ShowOnTechnicalCosts: {
                    type: "boolean",
                    editable: true
                },
                ShowOnOtherCosts: {
                    type: "boolean",
                    editable: true
                }
            }
        },
        sync: function (e) {
            console.log("item synched"); //This should be fired after the 
                                         // updated data is sent, never 
                                         //happens   
        }

ListView 的初始化如下:

kendo.bind($("#listview-container"), {
        listViewDataSource: listViewDataSource,
        onItemSaved: function (e) {
            console.log("item saved"); // fired every time the user changes 
                                      //an item, as expected 
        }
    })

ListView 正确加载数据。当用户编辑项目时,更改在本地可见(离开编辑模式后)并且按预期触发保存事件。

但是,更改永远不会与服务器同步,永远不会调用我的更新方法,也永远不会调用网络活动。

ListView 保存方法的文档说明如下:

保存编辑的 ListView 项目。触发保存事件。如果未阻止保存事件且验证成功,将调用 DataSource 同步方法。

由于我不调用preventDefault保存事件,因此我希望数据源能够同步,但这不会发生。手动调用dataSource.sync()也无济于事。

我很困惑为什么这不起作用。任何提示表示赞赏。

4

1 回答 1

0

我跳过了模型配置中的一级嵌套,模型丢失了

schema: {
            model: {
                id: "Id",
                fields: {
                    Id: {
                        type: "number",
                        editable: false
                    },
                    DeptName: {
                        type: "string",
                        editable: false
                    },
                    HourRate: {
                        type: "number",
                        editable: true
                    },
                    ShowOnSavings: {
                        type: "boolean",
                        editable: true
                    },
                    ShowOnTechnicalCosts: {
                        type: "boolean",
                        editable: true
                    },
                    ShowOnOtherCosts: {
                        type: "boolean",
                        editable: true
                    }
                }
            }
        }
于 2017-11-29T15:19:21.780 回答