Как да хванете събитие за натискане на клавиш 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