0

我正在向 Kendo 数据源添加和删除数据。我希望将其保存为 localStorage,并能够从 localStorage 中再次读取它。

在这里,我尝试使用 jStorage 来保存和加载数据。

它是如何加载的:

if ($.jStorage.get('favoritter') != null) {
    var datakilde_favoritter = $.jStorage.get('favoritter');
} else {
    var data = [
        {id: 5, name: "LINK ONE", url: "http://www.linkone.com" }
    ];
    var datakilde_favoritter = new kendo.data.DataSource({
        data: data,
        sort: { field: "name", dir: "asc" }
    });
}

保存方式:

$.jStorage.set('favoritter', datakilde_favoritter);
4

1 回答 1

1

将您的数据源定义为:

var ds = new kendo.data.DataSource({
    transport: {
        read   : function (op) {
            var data = $.jStorage.get('favoritter');
            if (!data) {
                data = [
                    {id: 5, name: "LINK ONE", url: "http://www.linkone.com" }
                ];
            }
            op.success(data);
        },
        update : function (op) {
            $.jStorage.set("favoritter", ds.data());
            op.success(op.data);
        },
        destroy: function (op) {
            console.log("destroy", ds.data());
            $.jStorage.set("favoritter", ds.data());
            op.success(op.data);
        },
        create : function (op) {
            $.jStorage.set("favoritter", ds.data());
            op.success(op.data);
        }
    },
    sort     : { field: "name", dir: "asc" },
    pageSize : 10,
    schema   : {
        model: {
            id    : "id",
            fields: {
                id  : { type: 'number' },
                name: { type: 'string' }
            }
        }
    }
});

如果不需要,create您可以考虑删除。destroy

你的网格会是这样的:

var grid = $("#grid").kendoGrid({
    dataSource: ds,
    editable  : "popup",
    pageable  : true,
    toolbar   : ["create"],
    columns   : [
        { command: ["edit", "destroy"], width: 100 },
        { field: "id", width: 90, title: "#" },
        { field: "name", width: 90, title: "URL Name" }
    ]
}).data("kendoGrid");

基本上在更新时,您需要op.success使用从服务器返回的数据进行调用。在您的情况下,因为它是浏览器本身,您不需要只返回原始数据。

于 2013-08-08T11:09:19.417 回答