簡體   English   中英

從網格ExtJs 4中獲取一行

[英]get a row from a grid 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中的完整行? 謝謝!

你可以使用getNode解決這個ExtJS 4.x: grid.getView().getNode(index)

getNode可以獲取HTML ID(不是非常有用),索引或商店記錄。

我想你需要這樣的東西:

Ext.onReady(function () {
    var store = Ext.create('Ext.data.Store', {
        storeId: 'simpsonsStore',
        fields: ['name', 'email', 'phone'],
        data: {
            'items': [{
                'name': 'Lisa',
                "email": "lisa@simpsons.com",
                "phone": "555-111-1224"
            }, {
                'name': 'Bart',
                "email": "bart@simpsons.com",
                "phone": "555-222-1234"
            }, {
                'name': 'Homer',
                "email": "home@simpsons.com",
                "phone": "555-222-1244"
            }, {
                'name': 'Marge',
                "email": "marge@simpsons.com",
                "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/

我已經解決了訪問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*/)

獲取FireBug插件並在“處理程序”中監視網格。 如果你看到keyId2列中的數據,你也可以看到firebug中的方式。 即網格對象 - >存儲對象 - >數據數組。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM