0

Kendo dataSource にデータを追加および削除しています。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

DataSource を次のように定義します。

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' }
            }
        }
    }
});

不要な場合はcreateand を削除することを検討してください。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 に答える