0

首先,我认为这是一个简单的问题,但无论如何我都无法解决。

我有一个 extjs 网格面板,它的商店和模型。从控制器中,我可以插入新记录来存储,当我使用 firebug 和调试时,我可以列出存储中的所有新记录(panel.store.data.items)但是在 gridview 中我无法使其可见。

你能告诉我我在哪里以及我缺少什么吗?为什么记录没有在网格中列出?

这是我的模型

Ext.define('BOM.model.PaketModel', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'seriNo', type: 'string' },
        { name: 'tutar', type: 'string' },
    ]
});

这是商店

Ext.define('BOM.store.PaketStore', {
    extend: 'Ext.data.Store',
    model: 'BOM.model.PaketModel',
    proxy: {
        type: 'memory',
        reader: {
            type: 'json',
            root: 'data',
        },
        writer: {
            type: 'json',
            root: 'data',
        },
    },

});

这是我添加新行的方法

addNew: function () {
        this.getPaketWindow().returnRowEdit().cancelEdit();
        this.getPaketWindow().getStore().insert(0, new BOM.model.PaketModel());
        this.getPaketWindow().returnRowEdit().startEdit(0, 0);
    }

更新视图

Ext.define('BOM.view.PaketCreate', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.paketcreate',
    bodyPadding: 5,
    layout: 'fit',

    header:false,

    initComponent: function () {

        this.columns = [
            {   text: 'Seri No',        flex: 2,    sortable: true,     dataIndex: 'seriNo',        field: {xtype: 'textfield'} }, 
            {   text: 'Tutar',          flex: 2,    sortable: true,     dataIndex: 'tutar',         field: {xtype: 'textfield'} }
        ];
        this.dockedItems = [{
            xtype: 'toolbar',
            items: [{
                text: 'Ekle',
                id:'addNewCheck',
                iconCls: 'icon-add',

            },'-',{
                id: 'deleteCheck',
                text: 'Sil',
                iconCls: 'icon-delete',
                disabled: true,
           }]
        }];
        this.store = 'BOM.store.PaketStore';
        rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
            clicksToMoveEditor: 1,
            autoCancel: false
        });
        this.plugins = rowEditing,
        this.callParent(arguments);
    },
    returnRowEdit: function () {
        console.log("row editing...");
        return rowEditing;
    }
});
var rowEditing;
4

2 回答 2

1

尝试:

this.store =  Ext.create('BOM.store.PaketStore');

代替:

this.store = 'BOM.store.PaketStore';

http://jsfiddle.net/qzMb7/1/

于 2013-02-13T10:37:31.327 回答
0

当我添加“.getView()”时它可以工作

this.getPaketWindow().getView().getStore().insert(0, new BOM.model.PaketModel())

However, I still do not understand. Both reaches the same store when I add records manually I can see them in the store.data but it is visible only if I include .getView() part

于 2013-02-18T07:22:43.127 回答