2

Kendo Datasource に問題があります。修正されたオブジェクトで変更が適切に実行されているのに、更新が実行されません。

データソースは非常に単純です:

    collection: new kendo.data.DataSource({
        autoSync: false,
        batch: true,
        transport: {
            read: {
                url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignettes_Read",
                dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests
            },
            update: {
                url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignette_Update",
                dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests
            },
            schema: {
                model: {
                    id: "Id"
                }
            }
        },
        change: function (e) {

            console.log(this);
            console.log(e);

            //Not working too
            //if (e.action == "itemchange") {
            //    debugger;
            //    vignettesViewModel.collection.pushUpdate(e.items[0]);
            //}

            $('.vignette').detach();
            for (var i = 0; i < vignettesViewModel.collection.data().length; i++) { 
                vignettesViewModel.createVignetteUI(vignettesViewModel.collection.data()[i]);                    
            }

            vignettesViewModel.init()
        }
    })

テストでは、autosync を false に設定し、batch を true に設定します。

コードの後半で、データソースを更新し、sync() メソッドによってデータソースを明示的に起動しました

    //Some logic up
        var data_hospit = vignettesViewModel.getByUid($(ui.element).data('uid'));
    //Another logic
        data_hospit.set('date_debut', cellDepart.data('date'));
        data_hospit.set('date_fin', cellArrivee.data('date'));
        data_hospit.set('PrenomNomEtDateDeNaissance', 'toto');

        vignettesViewModel.collection.sync();

update は発生しませんが、変更されたオブジェクトが変更機能を通過することがよくわかります。では、なぜ update が起動されないのでしょうか? id : 'Id' でモデルを適切に定義しましたが、更新文字列をダミー関数 alert() に変更すると、これも機能しません。pushUpdate で更新を「強制」しようとしましたが、「undefined function」というエラーが発生しました

ご協力いただきありがとうございます

4

1 に答える 1