Как поймать событие нажатия клавиши Tab в сетке Ext JS 3

Я пытаюсь поймать событие нажатия клавиши Tab. Вот что я пробовал:

this.test.on('keypress', function(t,e) {
    if (e.getKey() == Ext.EventObject.ENTER) {
        alet('kk');
    }
}, this);

Пожалуйста, помогите поймать событие нажатия клавиши Tab в ячейках сетки.

This my EditorGridPanel override function

         Ext.override(Ext.grid.EditorGridPanel, {
            initEvents : function(){
               Ext.grid.EditorGridPanel.superclass.initEvents.call(this);
               this.on("bodyscroll", this.stopEditing, this, [true]);
               this.on("columnresize", this.stopEditing, this, [true]);
               this.view.scroller.on("mousedown", this.onMouseDownEditClick, this);

               this.on('keypress', function(t,e) {
//                  if (e.getKey() == Ext.EventObject.TAB) {
                      alert('kk');
//                  }
               }, this);                

               //Reload datastore without redrawing grid
               this.getView().on('beforerefresh', function(view) {
                 view.scrollTop = view.scroller.dom.scrollTop;
                 view.scrollHeight = view.scroller.dom.scrollHeight;
               });
               this.getView().on('refresh', function(view) {
                   setTimeout(function () {
                       view.scroller.dom.scrollTop = view.scrollTop + (view.scrollTop == 0 ? 0 : view.scroller.dom.scrollHeight - view.scrollHeight);
                   }, 100);
               });

                if(this.clicksToEdit == 'mousedown'){
                    this.view.scroller.on("mousedown", this.onMouseDownEditClick, this);
                }else   if(this.clicksToEdit == 1){
                    this.on("cellclick", this.onCellDblClick, this);
                }else {
                    if(this.clicksToEdit == 'auto' && this.view.mainBody){
                        this.view.mainBody.on("mousedown", this.onAutoEditClick, this);
                    }
                    this.on("celldblclick", this.onCellDblClick, this);
                }
            },
            onMouseDownEditClick : function(e, t){
               if(e.button !== 0){
                  return;
               }
               var row = this.view.findRowIndex(t);
               var col = this.view.findCellIndex(t);
               edit_row = row;
               edit_col = col;
               if(row !== false && col !== false){
                  this.startEditing(row, col);
               }
            }

         }); 

person Duleep    schedule 27.11.2013    source источник


Ответы (2)


Я вижу опечатку в вашем коде. Вместо

alet('kk');

использовать

alert('kk');

Но в любом случае, вы пробовали использовать что-то подобное?

this.test.on('keypress', function(t,e) {
   if (e.getKey() == Ext.EventObject.TAB) {
       alert('kk');
   }
}, this);
person Alexander Myshov    schedule 29.11.2013
comment
спасибо за ваш отзыв, на самом деле я пытаюсь с предупреждением, но это не дает мне никакого предупреждения. но я переопределяю EditerGridPanel для включения редактирования одним щелчком мыши в моей сетке. теперь я редактирую свой вопрос с этим кодом - person Duleep; 04.12.2013

У меня была аналогичная проблема с этим, поскольку событие «нажатие клавиши» срабатывает только тогда, когда событие происходит в EditorGridPanel (а не в отдельных ячейках).

Я поместил прослушиватель событий в GridView EditorGridPanel, в частности, для моих целей прослушивания события rowupdated (http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.grid.GridView-event-rowupdated) - Я надеюсь, что это поможет кому-то еще.

person dnbwise    schedule 30.05.2014