2016-01-17 41 views
0

我必須讓我的網格列的數據做出一些決定,並填寫了一些數據,一些inputboxes一旦電網完成渲染之後。但我無法取得網格商店。如何從Ext.grid.Panel獲取存儲數據的完成渲染

我知道如何讓存儲數據

var store = Ext.getCmp('USER_GRID').getStore();

但我有點糊塗了,在那裏把這段代碼。

一種方法把這個網格的列的renderer: function(value, rowIndex, colIndex)

我也試過

  Ext.create('Ext.grid.Panel', { 
      id:'USER_GRID', 
      store: myStore, 
      columns : [{...my columns....}] 
      listeners: { 
       render:function(){ 
        var store = Ext.getCmp('USER_GRID').getStore(); 
       } 
      }, 

但在這裏也我正在店裏爲空白。

我也試圖把同樣的

tbar: [{ 
     xtype : 'textfield', 
     id:'TOTAL_USERS', 
     fieldLabel : 'Total Users', 
     listeners: { 
      afterrender: function(field){ 
       var store = Ext.getCmp('USER_GRID').getStore(); 
      }); 
     } 
    } 
}, 

其空白這裏。

你能幫忙嗎?

編輯: 感謝@Sergey但我不知道爲什麼我沒有在我的afterrender方法越來越myStore。但我在你的小提琴例子中也是如此。

我用另一種方式來滿足我的要求。

dockedItems: [ 
    { 
    xtype: 'toolbar', 
    dock: 'top', 
    items: [{ 
      xtype: 'label', 
      text: 'Live Users:' 
     },{ 
      xtype: 'displayfield', 
      id: 'TOTAL_LIVE_USERS', 
      value: '0' 
     } 
    ] 
} 
], 

//這是列代碼。每次呈現通話後,我都會將值增加1以進行最終計數。

{text: "Licence Tpye", width: 100, dataIndex: 'licenceType', sortable: true, 
     renderer: function(value, rowIndex, colIndex){ 
     var val = parseInt(Ext.getCmp("TOTAL_LIVE_USERS").value); 

     if(value == 'Live'){ 
      Ext.getCmp('TOTAL_LIVE_USERS').setValue(val + 1); 
     } 

     return value; 
    } 
} 

請建議,如果它的錯誤或正確的方式做同樣的。有什麼危害?

+0

你使用Ext6嗎?如果是,請嘗試'boxready'事件。暴動事件被解僱得太早。您也可以通過指定storeId並使用'Ext.getStore(storeId)' – Alexander

+1

來獲得商店。這是空白的,因爲商店在網格剛完成渲染時尚未加載數據。也許你想附加一個監聽器來存儲加載事件。 – serg

回答

1

由於您inputboxes數據取決於存儲數據你要聽存儲加載事件(我每個商店被加載,你必須更新數據的時間猜測)。

店被加載之前,你可以設置這些inputboxes爲禁用或表明,這是還沒有準備好一些其他方式。

Simple fiddle來說明你如何能聽存儲負載事件和更新網格工具欄領域。

相關問題