0

選択したグリッド行からのデータの取得について質問があります。

これは、データベース情報が保存されるグリッド パネルです。

gridHoldingPanel = _ui.createGrid({
                extClass: 'Ext.grid.Panel',
                width: windowSettings.gridPanel.width,
                height: windowSettings.gridPanel.height,
                id: _id.archiveHistoryGrid,
                title: null,
                selModel: 'rowmodel',
                store: ds,
                columns: [{
                    header: 'Archived at',
                    dataIndex: 'archived_at',
                    width: 120
                }, {
                    header: 'Calls Starting',
                    dataIndex: 'date_from',
                    width: 120
                }, {
                    header: 'Calls Ending',
                    dataIndex: 'date_to',
                    width: 120
                }, {
                    header: 'Calls Archived',
                    dataIndex: 'total_calls',
                    width: 90
                }, {
                    header: 'Database',
                    dataIndex: 'db_archived',
                    width: 70
                }, {
                    header: 'Archive Path',
                    dataIndex: 'path',
                    width: 200
                }],
                stripeRows: true,
                listeners : {
                    itemdblclick: function(dv, record, item, index, e) {
                        var win = _restoreCallsWindow(), field= win.down('textfield');
                        field.setValue(record.get('path'));
                        win.show();
                    }
                }
            })

以下は、グリッドと同じウィンドウにあるボタンを含むパネルです。

buttonsPanel = _ui.createPanel({
                border: false,
                width: windowSettings.buttonsPanel.width,
                height: windowSettings.buttonsPanel.height,
                id: _id.archiveHistoryButtons,
                items: [{
                    layout: 'hbox',
                    border: false,
                    margin: '5px 5px 5px 5px',
                    items: [
                    //Refresh button
                    _ui.createButton({
                        text: 'text_auto_refresh',
                        cls: 'sense-archive-button-buttons',
                        id: _id.arHistoryRefresh,
                        handler: function() {
                            ds.load();
                        }
                    }),
                    //Restore button
                    _ui.createButton({
                        text: 'text_restore',
                        margin: '0px 0px 0px 5px',
                        cls: 'sense-archive-button-buttons',
                        id: _id.arHistoryRestore,
                        handler: function(grid, rowIndex, colIndex) {
                            var row = gridHoldingPanel.getSelectionModel().getSelection();
                            console.log(row);
                        }
                    }),
                    //Close window button
                    _ui.createButton({
                        text: 'text_close',
                        margin: '0px 0px 0px 5px',
                        cls: 'sense-archive-button-buttons',
                        id: _id.arHistoryClose,
                        handler: function ( ) {
                            _historyWindow().close();
                        }
                    })]
                }]
            })

私がやろうとしているのは、復元ボタンをクリックすると、テキスト入力フィールドを含む別のウィンドウが開き、開いたときに選択した行のパス値をデータグリッドに表示したいということです。

現時点でわかるように、復元ボタンにあるコードは行の値をオブジェクト全体として返し、オブジェクトからデータを取得しようとするとrecord.datame を返しますundefined

誰かがこれで私を助けることができますか?

4

1 に答える 1

1

問題は、ボタン ハンドラ パラメータとアイテム クリック イベント関数を混同したことです。したがって、ハンドラーの場合、パラメーターとしてボタンのみがあります。getSelection 関数は選択の配列を返すため、単一の select がある場合、行は実際には最初の要素になります。簡単な修正は次のとおりです。

handler: function(btn) {
                            var records = gridHoldingPanel.getSelectionModel().getSelection();
                            console.log('the selected record path' +records[0].data.path);
                        }
于 2012-11-12T14:02:39.253 に答える