2013-05-08 5 views
0

Я использую ArrayStore и заполняю его, добавляя записи модели. Этот магазин связан с сеткой данных.ExtJs: Магазин, заполненный сеткой, появляется как пустой

Теперь объект arraystore заполняется отлично, но данные не появляются в сетке. Фактически, при отладке я обнаружил, что в хранилище сетки (datagrid.store) также есть данные, но при этом он не отображается на экране!

Следующий мой код.

Модель:

Ext.define('Ext.ux.window.visualsqlquerybuilder.SQLAttributeValueModel', { 
extend: 'Ext.data.Model', 
fields: [ 
    { 
     name: 'attribute', 
     type: 'string' 
    }, 
    { name: 'attributeValue', 
     type: 'string' 
    } 
    ] 
}); 

Магазин:

var attrValueStore = Ext.create('Ext.data.ArrayStore', { 
    autoSync: true, 
    model: 'Ext.ux.window.visualsqlquerybuilder.SQLAttributeValueModel' 
}); 

Сетка

Ext.define('Ext.ux.window.visualsqlquerybuilder.SQLAttributeValueGrid', { 
//requires: ['Ext.ux.CheckColumn'], 
autoRender: true, 
extend: 'Ext.grid.Panel', 
alias: ['widget.attributevaluegrid'], 
id: 'SQLAttributeValueGrid', 
store: attrValueStore, 
columnLines: true, 
plugins: [Ext.create('Ext.grid.plugin.CellEditing', { 
    clicksToEdit: 1 
})], 
columns: [   
    {      /*Expression */ 
     xtype: 'gridcolumn', 
     text: 'Attribute', 
     sortable: false, 
     menuDisabled: true, 
     flex: 0.225, 
     dataIndex: 'attribute' 
    }, 
    {       /*Attribute Values*/ 
     xtype: 'gridcolumn', 
     editor: 'textfield', 
     text: 'Values', 
     flex: 0.225, 
     dataIndex: 'attributeValue' 
    } 
], 
initComponent: function() { 
    this.callParent(arguments); 
} 
}); 

Мо Даль Окно отображения сетки

var attributeValueForm = Ext.create('Ext.window.Window', { 
title:'Missing Attribute Values', 
id: 'attributeValueForm', 
height:500, 
width:400, 
modal:true, 
renderTo: Ext.getBody(), 
closeAction: 'hide', 
items:[ 
    { 
     xtype: 'attributevaluegrid', 
     border: false, 
     //height: 80, 
     region: 'center', 
     split: true 
    } 
], 
buttons: [ 
    { 
     id: 'OKBtn', 
     itemId: 'OKBtn', 
     text: 'OK', 
     handler: function() { 
      Ext.getCmp('attributeValueForm').close(); 
     } 
    }, 
    { 
     text: 'Cancel', 
     handler: function() { 
      Ext.getCmp('attributeValueForm').close(); 
     } 
    } 
] 
}); 

Теперь во время отображения модального окна, я проверил значение объекта хранилища, а также магазин внутри объекта сетки. Оба имеют правильные данные.

Но когда откроется окно, я получаю пустую сетку

+0

Вы никогда не загружаются в магазин в любом месте , Вы не назначаете ему прокси-сервер или не даете ему встроенных данных. Магазин пуст. –

+0

@EvanTrimboli: Я понимаю вашу точку зрения, но на самом деле я пропустил добавление кода для добавления данных в магазин. Я делаю это отдельно в другом методе, в котором я создаю объект модели, устанавливаю значения для его свойств и добавляю его в хранилище. Таким образом, в хранилище есть данные. – DarkKnightFan

ответ

0

Может быть, вам нужно загрузить данные магазина ... попробуйте:

var attrValueStore = Ext.create('Ext.data.ArrayStore', { 
    autoSync: true, 
    autoLoad : true, 
    model: 'Ext.ux.window.visualsqlquerybuilder.SQLAttributeValueModel' 
}); 
+0

После этого может потребоваться время от времени загружать сетку динамически, поскольку иногда, когда хранилище готово (это когда происходит автозагрузка), у нас могут не быть соответствующих параметров, доступных для хранилища. Чтобы загрузить магазин из любого места в вашем приложении, вы можете использовать 'Ext.StoreMgr.lookup (''). Load()' где значение в квадратных скобках является элементом вашего магазина. Надеюсь, это поможет Baz – BigBaz

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