2013-02-13 7 views
0

Сначала я подумал, что это простая проблема, но я все равно не смог ее решить.Extjs mvc добавить запись в панель сетки

У меня есть сетка extjs, ее магазин и модель. Из контроллера я могу вставить новые записи для хранения, когда я использую firebug и debug, я могу перечислить все новые записи в магазине (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); 
    } 

UPDATE VIEW

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; 
+0

вы можете добавить код 'view'? –

+0

Я обновил код просмотра – tkcn

+0

Я нашел проблему, но у меня нет объяснений. this.getPaketWindow() возвращает представление, и я мог получить доступ к хранилищу с помощью this.getPaketWindow(). getStore(). Однако this.getPaketWindow(). GetView(). GetStore(). Insert (0, new ...) просто сработал. Зачем нам getView(), почему существуют два разных магазина? – tkcn

ответ

0

Это работает, когда я добавить ".getView()", как

this.getPaketWindow() .getView(). getStore(). insert (0, новый BOM.model.Paket Модель())

Однако я все еще не понимаю. Оба достигают одного и того же хранилища, когда я добавляю записи вручную, я могу их видеть в файле store.data, но это видно только в том случае, если я включаю в .getView() часть

1

Try:

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

вместо:

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

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

+0

Я пробовал, но он все тот же, есть данные в магазине, но не в сетке. Если я добавлю данные вручную (например, данные: [...]), он показывает, но со вставкой это не так. – tkcn

Смежные вопросы