19

私はExt.define()(Ext v4)でGridPanelを拡張しています。

グリッド行をダブルクリックしたときに行データを取得する必要があります。この時点では、イベントリスナーを機能させることさえできません。

Ext.define('Application.usersGrid', {
extend: 'Ext.grid.GridPanel',
alias: 'widget.usersgrid',


viewConfig: {
    listeners: {
        dblclick: function(dataview, index, item, e) {
            alert('dblclick');
        }
    }
},
...

ここで何が問題になっていますか?

誰かが答えを必要とするなら-これは正しい方法です:

Ext.define('Application.usersGrid', {
extend: 'Ext.grid.Panel',
alias: 'widget.usersgrid',


viewConfig: {
    listeners: {
        itemdblclick: function(dataview, record, item, index, e) {
            alert('itemdblclick');
        }
    }
},
...

http://dev.sencha.com/new/ext-js/4-0/api/Ext.grid.GridView#event-itemdblclick

4

3 に答える 3

26

リスナーをviewconfigに入れる必要はありません。ここに私の作業構成があります:

listeners : {
    itemdblclick: function(dv, record, item, index, e) {
        alert('working');
    }
},

もう1つはExt.grid.GridPanel、extendプロパティで使用しているようです。しかし、ドキュメントではExt.grid.Panel. しかし、gridpanel を使用しても、すべて正常に動作するようです。

Ext JS 4 の用語を使用することをお勧めします。これは、後で他の 4.x バージョンでアプリケーションが破損する可能性があるためです。

現在、新しい MVC アーキテクチャを使用している場合は、これらのアクションをビューではなくコントローラーに移動する必要があります。詳細については、MVC アーキテクチャ ガイドを参照してください。

于 2011-04-22T06:48:08.333 に答える
2

ExtJS 4 の MVC アプローチには、このようなハンドラーを定義する別のスマートな方法もあります。いくつかのコード例:

Ext.define('App.controller.Documents', {

  extend: 'Ext.app.Controller',
  stores: ['Documents'],
  models: ['Document'],
  views: [
    'document.List',
    'document.Edit',
    'document.Preview'
  ],  

  init: function() {

    this.control({

      /*  
       * a cool way to select stuff in ExtJS 4
       */
      'documentlist': {
        itemdblclick: this.editDocument
      },  

      /*  
       * simple access to components
       */
      'documentedit button[action=save]': {
        click: this.updateDocument
      },  

    }); 

  },  

  editDocument: function(grid, record) {
    var view = Ext.widget('documentedit');
    view.down('form').loadRecord(record);
  },  

  updateDocument: function(button) {
    var win = button.up('window'),  // new selection API
        form   = win.down('form'),  // in ExtJS 4
        record = form.getRecord(),
        values = form.getValues();

    record.set(values);
    win.close();
  }
});
于 2011-05-11T15:39:48.737 に答える
0
listeners: {
        select: 'xxxx',

        itemdblclick: function (dv, record, item, index, e) {
            var myBtn = Ext.getCmp('btnEdit');
            myBtn.onClick();
        }
    },
于 2017-06-21T15:27:32.387 に答える