海水正蓝

面朝大海,春暖花开
posts - 145, comments - 29, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

让Extjs EditorGridPanel 编辑时支持方向键

Posted on 2013-08-27 13:10 小胡子 阅读(310) 评论(0)  编辑  收藏 所属分类: Ext
在用 extjs editorgridpanel 进行输入编辑的时候, 默认情况下只支持使用 tab 键可以实现焦点切换, 如果想让editorgridpanel 在编辑时通过方向键来实现焦点跳转切换,只需加上以下代码:

//让grid支持方向键盘 by liongis@163.com
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+11, 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+11, 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+11, smodel.acceptsNav, smodel);
                   
break;
        }
       
if (newCell) {
            g.startEditing(newCell[
0], newCell[1]);
       }
     }
});
注意:这里重写的是:CellSelectionModel ,而不是RowSelectionMode
原文出自:
http://www.cnblogs.com/liongis/p/3284620.html

只有注册用户登录后才能发表评论。


网站导航: