0

最初は簡単な問題だと思っていましたが、とにかく解決できませんでした。

私はextjs gridpanel、そのストアとモデルを持っています。コントローラーから、新しいレコードをストアに挿入できます。firebug とデバッグを使用すると、ストア (panel.store.data.items) 内のすべての新しいレコードを一覧表示できますが、グリッドビューでは表示できません。

どこに何が欠けているか教えてください。レコードがグリッドに表示されないのはなぜですか?

これは私のモデルです

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, 新しい BOM.model.PaketModel())

しかし、私はまだ理解していません。レコードを手動で追加すると、両方とも同じストアに到達します。それらは store.data で見ることができますが、.getView() 部分を含めた場合にのみ表示されます

于 2013-02-18T07:22:43.127 に答える