1. 程式人生 > >關於ExtJS GridPanel幻影資料解決辦法

關於ExtJS GridPanel幻影資料解決辦法

這個問題是很早以前發現的,最近偶然再次遇見了,把以前整理的筆記分享一下

var records = store.getUpdatedRecords();// 獲取修改的行的資料,無法獲取幻影資料  
                                    var records = store.getRange();
                                    //						        
var phantoms=store.getNewRecords( ) ;//獲得幻影行  
                                    //						        records=records.concat(phantoms);//將幻影資料與真實資料合併 

當Store.getUpdatedRecords 獲取不到資料時
1.資料沒有改變
2.model中的ID沒有被區分,或者是store 中的資料直接沒有id 這個屬性,所有獲取不到資料

解決辦法:(2)
在model中新增idProperty屬性,預設是ID,如果獲取不到id 或者後臺沒有傳遞id,並且前臺js中也沒有設定id,就將idProperty設為其它欄位(注意是能夠區分的唯一欄位)

比如: 2016.3.25
Ext.define('costingBillModel',{
    extend: 'Ext.data.Model',
    idProperty: 'missionBillId',//新增的idProperty
    fields: [
        {
            name: 'id',
            defaultValue: ''
        },
        {
            name: 'missionBillId',
            defaultValue: '',
        },
        {
            name: 'goodsId',
            defaultValue: '',
        },
        {
            name: 'goodsName',
            defaultValue: '',
        },
        {
            name: 'goodsCode',
            defaultValue: ''
        },
        {
            name: 'model',
            defaultValue: ''
        },
        {
            //物料成本
            name: 'materialCost',
            defaultValue: '',
        },
        {
            //工時費用
            name: 'hourCosts',
            defaultValue: '',
        },
        {
            //水電費
            name: 'utilities',
            defaultValue: '',
        },
        {
            //裝置折舊費
            name: 'fix_Depreciation',
            defaultValue: '',
        },
        {
            //物業成本
            name: 'tenementCosts',
            defaultValue: '',
        },
        {
            //其它費用
            name: 'otherCosts',
            defaultValue: '',
        },
        {
            //合計
            name: 'totalCosts',
            defaultValue: '',
        },
        {
            //備註
            name: 'remark',
            defaultValue: '',
        },
    ]
});