ExtJs:如何通过代理插入到商店中从服务器读取GUID

时间:2014-03-28 18:28:47

标签: javascript extjs

根据http://dev.sencha.com/deploy/ext-4.0.1/examples/grid/row-editing.html示例,我的网格上有以下代码,以方便我的商店添加新记录:

tbar: [{
        text: 'Add Rate',
        handler: function(button) {
            var myGrid = button.up('grid');
            //console.log(myGrid);
            var myPlugin = myGrid.getPlugin('rowediting');
            myPlugin.cancelEdit();

            var r = Ext.create('RateManagement.model.CountrySpecific', {
                id: '',
                hostCountryId: '',
                hostCountry: '',
                rate: 0,
                currencyId: '',
                rateTypeId: '',
                frequencyCode: '',
                perFamilyMember: '',
                familySize: 0
            });

            console.log(r);

            var store = myGrid.getStore();

            store.insert(0, r);
            myPlugin.startEdit(0, 0);
        }
    }],

这是我的代理模型:

Ext.define('RateManagement.model.CountrySpecific', {
    extend: 'Ext.data.Model',
    fields: 
        [ 
            {name:'id', type: 'string'},
            {name:'hostCountryId', type: 'string'},   
            {name:'hostCountry', type: 'string'},         
            {name:'rate',type: 'number', useNull: true},
            {name:'currencyId', type: 'string'},
            {name:'rateTypeId', type:'string'},
            {name:'frequencyCode', type:'string'},
            {name:'perFamilyMember'},
            {name:'familySize', type: 'int', useNull: true}         
        ],
    proxy: {
        type: 'rest',
        format: 'json',
        url: '/intake/sap/rates/CountrySpecific',
        actionMethods: {
            create : 'PUT',
            read   : 'GET',
            update : 'PUT',
            destroy: 'PUT'
        }
    }
});

每当我点击“添加费率”将新记录插入我的商店时,它就会调用我的代理并生成GUID。但是,当我点击该记录上的“更新”时,没有ID值 - 它只是null。因此,它只是插入一条新记录而不是更新我刚创建的现有记录。

那么,有没有办法使用代理的reader尝试使用生成的新ID更新我的模型?

或者,我是否采取了错误的方式?

0 个答案:

没有答案