1

假设我创建了一个像这样的网格存储

var store = Ext.create('Ext.data.ArrayStore', {
fields:['id','title', 'director', 'released', 'genre','tagline', 'price', 'available'],
data: [
        [
            1,
            "Office Space",
            "Mike Judge",
            "1999-02-19",
            1,
            "Work Sucks",
            "19.95",
            1
        ],
        [
            3,
            "Super Troopers",
            "Jay Chandrasekhar",
            "2002-02-15",
            1,
            "Altered State Police",
            "14.95",
            1
        ]
    ]
});

当我在浏览器上运行它时,我什么也看不到,因为它已经保存在浏览器的内存中,我们需要将它显示到网格中以查看这些数据。

如果我使用编辑器插件在浏览器中编辑网格,那么如何查看对网格存储所做的更改?怎么看?

4

2 回答 2

1

我会说这取决于。

首先,要在网格中显示您的存储,它应该是这样的(简化的),遵循您的代码:

var grid = Ext.create('Ext.grid.Panel', {
    title: 'Test',
    store: store,
    columns: [
        { text: 'title',  dataIndex: 'title' },
        { text: 'director', dataIndex: 'director', flex: 1 }
    ],
    height: 200,
    width: 400
});
var MyWindow = Ext.create('widget.window',{width:400,height:200,items:[grid]});
MyWindow.show();

您将商店分配给本地变量“商店”。通常,如果您在网格中使用该存储,并且在该网格中进行更改,它应该反映在存储中。

当您使用可编辑网格插件使其可编辑时,更改会直接写入存储中,因此应该可以:

var currentStoreContent = store.data.items;

或者,从网格:

var currentStoreContent = grid.getStore().data.items
于 2013-11-05T09:49:55.763 回答
1
  1. 您可以添加storeId到商店,然后可以使用以下全局功能: Ext.StoreManager.lookup('storeId'); 使用此功能,您始终可以从任何地方获取商店。

  2. 网格面板有edit( editor, e, eOpts )编辑完成后可以使用的事件。

例子:

var store = Ext.create('Ext.data.ArrayStore', {
    storeId: 'gridStore',
    (...)
});

var grid = Ext.create('Ext.grid.Panel', {
    store: store,
    (...),  
    listeners: {
        edit: function(editing, e, eOpts) {
            var record = e.record;
            console.log('Changes on this record: ', e.record.getChanges());         
            console.log('Original value: ', (editing.ptype == 'cellediting' ? e.originalValue : e.originalValues));
            console.log('New value: ', (editing.ptype == 'cellediting' ? e.value : e.newValues));           
        }
    }

});

//for save on a toolbar
var button = Ext.create('Ext.button.Button', {
    text: 'Save',
    (...),
    handler: function() {
        var gridStore = Ext.StoreManager.lookup('gridStore');
        console.log('all added, but not synchronized records: ', gridStore.getNewRecords());
        console.log('all edited, but not synchronized records: ', gridStore.getUpdatedRecords());
        console.log('all modified(added and edited), but not synchronized records:', gridStore.getModifiedRecords());
        console.log('all removed, but not synchronized records:', gridStore.getRemovedRecords());
    }
});
于 2013-11-05T10:20:07.473 回答