让Extjs EditorGridPanel 编辑时支持方向键

在用 extjs editorgridpanel 进行输入编辑的时候, 默认情况下只支持使用 tab 键可以实现焦点切换, 如果想让editorgridpanel 在编辑时通过方向键来 实现焦点跳转切换,只需加上以下代码:

// 让grid支持方向键盘 by [email protected]
Ext.override(Ext.grid.CellSelectionModel, {
    onEditorKey : function(field, e) {
        var smodel 
=   this ;
        var k 
=  e.getKey(), newCell, g  =  smodel.grid, ed  =  g.activeEditor;
        
switch (k){
            
case  e.TAB:
                 e.stopEvent();
                 ed.completeEdit();
                 
if  (e.shiftKey) {
                     newCell 
=  g.walkCells(ed.row, ed.col - 1 - 1 , smodel.acceptsNav, smodel);
                 } 
else  {
                     newCell 
=  g.walkCells(ed.row, ed.col + 1 1 , smodel.acceptsNav, smodel);
                 }
                 
if  (ed.col  ==   1 ) {
                     
if  (e.shiftKey) {
                         newCell 
=  g.walkCells(ed.row, ed.col + 1 - 1 , smodel.acceptsNav, smodel);
                     } 
else  {
                         newCell 
=  g.walkCells(ed.row, ed.col + 1 1 , smodel.acceptsNav, smodel);
                     }
                 }
                
break ;
            
case  e.UP:
                 e.stopEvent();
                 ed.completeEdit();
                 newCell 
=  g.walkCells(ed.row - 1 , ed.col,  - 1 , smodel.acceptsNav, smodel);
                
break ;
            
case  e.DOWN:
                 e.stopEvent();
                 ed.completeEdit();
                 newCell 
=  g.walkCells(ed.row + 1 , ed.col,  1 , smodel.acceptsNav, smodel);
                
break ;
            
case  e.LEFT:
                 e.stopEvent();
                 ed.completeEdit();
                 newCell 
=  g.walkCells(ed.row, ed.col - 1 - 1 , smodel.acceptsNav, smodel);
                 
break ;
             
case  e.RIGHT:
                 e.stopEvent();
                 ed.completeEdit();
                 newCell 
=  g.walkCells(ed.row, ed.col + 1 1 , smodel.acceptsNav, smodel);
                   
break ;
        }
       
if  (newCell) {
            g.startEditing(newCell[
0 ], newCell[ 1 ]);
       }
     }
});
注意:这里重写的是:CellSelectionModel ,而不是RowSelectionMode
原文出自:
http://www.cnblogs.com/liongis/p/3284620.html

你可能感兴趣的:(让Extjs EditorGridPanel 编辑时支持方向键)