2013-02-06 91 views
3

我認爲這是很簡單的回答了這個問題:得到一排ExtJS的4

我有簡單的網格,我的客戶商店:

//other code 
{ 
    xtype: 'grid', 
    store: 'SecondStore', 
    itemId: 'mainTabPanel2', 
    columns: [ 
     //this is not from the store 
     { 
      header: 'Not Form Store', 
      id: 'keyId2', 
     }, 
     //from the store 
     { 
      header: 'From Store', 
      dataIndex: 'label', 
      id: 'keyId', 
     } 
    ] 
} 

店裏只填充第二列id:keyId。其實它有:

fields: [{ name: 'label' }] 

而且這個工作很好。

我想從這個網格的第n 1行的函數中獲得。

handler: function() { 
    var grid = Ext.ComponentQuery.query('grid[itemId="mainTabPanel2"]')[0]; 
    //var row= get row(1) <- i don't know how to get the complete row 
} 

我與ExtJS的4個工作,所以我不能用命令讓它grid.getView().getRow(1);

我不能從商店得到它,因爲我想也得到柱與內容ID:keyId2未存儲在店裏,所以我不能做這樣的事情:

grid.getStore().getAt(1); 

任何人都知道如何獲得完整的行ExtJS的4? 謝謝!

+0

您是否找到解決方案但Marco? – sina

+0

是的,檢查我自己的答案 – Marco

回答

0

我已經解決accesing的DOM:

/* Get Dom of the first grid */ 
    var DOMgrid = Ext.select('#'+gridview.getId()); 
    var gridChild = DOMgrid.elements[0].children[1].children[0].children; 

那麼你應該得到的 「孩子」 你只關注DOM結構。

您還可以得到應用Ext.fly() COMAND單身輕量級元素,更新與update() COMAND內容:

Ext.fly(/*DOM object here*/).update(/*raw content here*/) 
1

我想你需要的東西是這樣的:

Ext.onReady(function() { 
    var store = Ext.create('Ext.data.Store', { 
     storeId: 'simpsonsStore', 
     fields: ['name', 'email', 'phone'], 
     data: { 
      'items': [{ 
       'name': 'Lisa', 
       "email": "[email protected]", 
       "phone": "555-111-1224" 
      }, { 
       'name': 'Bart', 
       "email": "[email protected]", 
       "phone": "555-222-1234" 
      }, { 
       'name': 'Homer', 
       "email": "[email protected]", 
       "phone": "555-222-1244" 
      }, { 
       'name': 'Marge', 
       "email": "[email protected]", 
       "phone": "555-222-1254" 
      }] 
     }, 
     proxy: { 
      type: 'memory', 
      reader: { 
       type: 'json', 
       root: 'items' 
      } 
     } 
    }); 

    var grid = Ext.create('Ext.grid.Panel', { 
     title: 'Simpsons', 
     store: Ext.data.StoreManager.lookup('simpsonsStore'), 
     columns: [{ 
      text: 'Name', 
      dataIndex: 'name' 
     }, { 
      text: 'Email', 
      dataIndex: 'email', 
      flex: 1 
     }, { 
      text: 'Phone', 
      dataIndex: 'phone' 
     }], 
     height: 200, 
     width: 400, 
     renderTo: Ext.getBody() 
    }); 

    alert(grid.getStore().getAt(1).data.name); 

}); 

的jsfiddle:http://jsfiddle.net/RftWF/

+1

我的商店中沒有「keyId2」(在您的示例中爲「name」字段),我無法將其添加到商店中。所以我不做grid.getStore()。getAt(1).data.name,因爲我沒有任何「data.name」定義。 – Marco

0

找螢火蟲插件和監測「處理」的網格。如果你看到keyId2列中的數據,你也可以看到螢火蟲的方式。即網格對象 - >存儲對象 - >數據數組。

您能告訴我們您是如何在網格的keyId2列中添加數據的嗎?

3

您可以使用此getNode ExtJS的4.x的解決:grid.getView().getNode(index)

getNode可以採取HTML ID(不是很有用),索引,或商店的記錄。