在单个网格实例中使用单个数据存储,这在extjs中无处不在

时间:2013-06-30 07:08:18

标签: extjs extjs4 extjs4.2

SCENARIO

  

我有一个网格面板(比如网格),它在我的应用程序中随处可用。假设组件( panel1 panel2 )正在使用网格。这个网格正在使用商店( store1 )。我想更新panel1中的网格而不更新panel2中的网格

我的问题

  

不想在panel1和panel2中为网格使用不同的商店。   他们可以通过任何方式实现这一目标。

     

我尝试将存储(使用新数据)绑定到panel1中的网格。但是panel1和panel2中的网格都会更新。

如果我不够清楚,请告诉我。请帮我解决这个问题。很多。

**For reference**
/*my grid*/
Ext.define('APP.view.mygrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.mygrid',
store:'store1',
columns: [ ...  ]


/*my panels*/
{
  xtype:'panel',
  items:[
         {
           xtype :'mygrid',
         }
       ],
  xtype:'panel',
  items:[
         {
           xtype :'mygrid',
         }
        ],
 }

3 个答案:

答案 0 :(得分:0)

您可以为第二个面板创建商店,请尝试以下操作:

var secondStore=Ext.create('your_store');
items: [
    {
        xtype: 'gridpanel',
        title: 'grid1',
        store: 'your_store'
    },{
        xtype: 'gridpanel',
        title: 'grid2',
        store: secondStore
    }
]

答案 1 :(得分:0)

我假设您通过商店中的某些本地更改来更新网格,并且您不会调用您的Web服务。然后你可以尝试这样做:

store.suspendEvents(false); // false: do not queue events
// do some data changes now
store.resumeEvents();

grid.getView().refresh(); // only on the first grid

答案 2 :(得分:0)

  

我已经通过每次创建商店实例来解决这个问题   调用网格。请看一下:

initComponent   : function() {
    this.items = [          
        {
            xtype   : 'myPanelgrids'
            name    : 'panel1' // this is the extra config to identify the grid in added in my panel1
        }

    ];
    this.callParent();
},
listeners: {
    render: function(){
        var store = Ext.create('Ext.data.Store', 
            {
                model: 'App.model.MyModel',
                autoLoad: true,
                 proxy: {
                        type: 'ajax',
                        url:'app/data/configdata.json',
                        reader: {
                            type: 'json',
                            root : 'myroot'//maintained a json property file with different roots for grids in panel1 and panel2
                        }
                    }
            }
        );

        this.down('grid').reconfigure(store);
    }
}
  

我正在从我的控制器更新特定网格的商店。