0

dblclick のリスナーを持つ Ext.grid.Panel があります。次のようになります。

listeners: {
    dblclick: {
        fn : function() {

               console.log("double click event processed");
        },
        element: 'el'
    }                
}

行がダブルクリックされたときに、新しいページで URL を開きたいです。URL を特定するには、行データ、または Panel のストアとして機能する JSON の「行」にアクセスする必要があります。このデータにアクセスするにはどうすればよいですか?

4

1 に答える 1

1

さて、イベントは itemdblclick (dblclick ではありません) です。行は引数としてハンドラーに渡されます。

たとえば、次のサンプルでは、​​行をダブルクリックすると、選択した Simpson 名を表示する警告ポップアップ ウィンドウが表示されます。

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'
        }
    }
});

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,
    listeners: {
        itemdblclick: {
           fn : function(grid, record) {
               alert(record.get('name'));
           }
        }
    },                

    renderTo: Ext.getBody()
});​

また、ここで動作することも確認できます: http://jsfiddle.net/lontivero/utjyd/1/

幸運を!

于 2012-12-11T17:03:57.443 に答える