3

この質問に答えるのはとても簡単だと思います:

カスタム ストアを使用した単純なグリッドがあります。

//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',
        }
    ]
}

ストアは 2 番目の列にのみ 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 で完全な行を取得する方法を知っている人はいますか? ありがとうございました!

4

4 に答える 4

3

次を使用して、この ExtJS 4.x で解決できますgetNodegrid.getView().getNode(index)

getNodeHTML ID (あまり役に立ちません)、インデックス、またはストア レコードを取得できます。

于 2013-10-31T11:25:12.547 に答える
1

私はあなたがこのようなものが必要だと思います:

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/

于 2013-02-06T08:54:03.877 に答える
0

FireBugプラグインを入手し、「handler」でグリッドを監視します。列keyId2からのデータを見ると、ファイアバグでもその方法を見ることができます。つまり、グリッドオブジェクト->ストアオブジェクト->データ配列。

グリッドのkeyId2列にデータを追加した方法を教えてください。

于 2013-02-06T17:53:29.013 に答える
0

私はDOMへのアクセスを解決しました:

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

次に、単に DOM 構造に従って、関心のある「子」を取得する必要があります。

コマンドを適用してシングルトン flyweight 要素を取得し、Ext.fly()コマンドでコンテンツを更新することもできますupdate()

 Ext.fly(/*DOM object here*/).update(/*raw content here*/)
于 2013-02-06T09:47:33.167 に答える