6

当您按下回车键或移出单元格(模糊)时,我试图让我的网格保存更改,而不必使用网格工具栏中的保存按钮。

我无法让它正常工作,我的 PHP/SQL 工作正常,所以我确定网格有问题。

这是我的代码:

$("#grid").kendoGrid({
dataSource: {
    transport: {
        read: WEBROOT+"admin/fetch-toppers",
        update: {
            url: WEBROOT+"admin/update-topper",
            type: "POST"
        }
    },
    error: function(e)
    {
        alert(e.responseText);
    },
    schema: {
        data: "data",
        model: {
            id: 'id',
            fields: {
                "id": {nullable: true},
                "Date": {editable: false},
                "name": {editable: false},
                "price": {editable: true}
            }
        }
    }
},
columns: [{field: "Date", width: 105}, {field: "name", title: "Topper"}, {field: "price", title: "Price", width: 125}],
height: 550,
filterable: true,
sortable: true,
pageable: true,
editable: true,
navigatable: true,
edit: function()
{
    //this.saveChanges()
}
});

我尝试了很多事情和不同的事件,但没有任何效果。

我怎样才能让它保存模糊的单元格值?

4

4 回答 4

7

在您的数据源中添加:

change: function (e) {
                        if (e.action == "itemchange") {
                            this.sync();
                        }
                    },

它应该看起来像:

dataSource: {
transport: {
    read: WEBROOT+"admin/fetch-toppers",
    update: {
        url: WEBROOT+"admin/update-topper",
        type: "POST"
    }
},
error: function(e)
{
    alert(e.responseText);
},
change: function (e) {
                        if (e.action == "itemchange") {
                            this.sync();
                        }
},
schema: {
    data: "data",
    model: {
        id: 'id',
        fields: {
            "id": {nullable: true},
            "Date": {editable: false},
            "name": {editable: false},
            "price": {editable: true}
        }
    }
}

},

于 2013-04-08T16:00:30.660 回答
1

您可以尝试使用数据源的更改事件来执行数据源的同步方法。

   $("#grid").kendoGrid({
dataSource: {
    transport: {
        read: WEBROOT+"admin/fetch-toppers",
        update: {
            url: WEBROOT+"admin/update-topper",
            type: "POST"
        }
    },
    change:function(){this.sync()},
    error: function(e)
    {
        alert(e.responseText);
    },
    schema: {
        data: "data",
        model: {
            id: 'id',
            fields: {
                "id": {nullable: true},
                "Date": {editable: false},
                "name": {editable: false},
                "price": {editable: true}
            }
        }
    }
},
columns: [{field: "Date", width: 105}, {field: "name", title: "Topper"}, {field: "price", title: "Price", width: 125}],
height: 550,
filterable: true,
sortable: true,
pageable: true,
editable: true,
navigatable: true,
edit: function()
{
    //this.saveChanges()
}
});
于 2012-12-23T17:05:42.633 回答
0

有一种更简单的方法可以实现这一点:在数据源上将 autoSync 设置为 true:https ://docs.telerik.com/kendo-ui/api/javascript/data/datasource/configuration/autosync

于 2018-05-21T10:25:39.837 回答
-1

您还可以直接从网格中调用数据源同步,如下所示(确保使用 setTimeout,根据本文中Telerik )...

save: function () {
     setTimeout(function() {
          yourDatasource.sync();
     }
}
于 2014-04-18T19:11:35.787 回答